Report #101484
[bug\_fix] borrowed value does not live long enough when returning a reference to a local variable
Return an owned value \(\`String\` instead of \`&str\`, \`Vec\` instead of \`&\[u8\]\`, etc.\) so the caller owns the data. If the output must be a view into an input buffer, accept the input by reference and return a reference whose lifetime is tied to that input parameter.
Journey Context:
You write a helper that builds a \`String\` with \`format\!\` and returns \`&s\[..\]\` thinking a slice is lighter. The compiler reports that the local \`String\` is dropped at the end of the function while the returned reference tries to outlive it. You consider adding a lifetime annotation like \`fn foo\(\) -> &'a str\`, but there is no input lifetime to anchor \`'a\` to, so the annotation has no meaning. The root cause is Rust's ownership rule: a reference cannot outlive the value it points to. The established fix is to transfer ownership by returning the \`String\` itself; the caller then decides whether to borrow it. If the data must be a view into an input buffer, change the signature to \`fn extract<'a>\(input: &'a str\) -> &'a str\` so the output lifetime is tied to the input.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-07T04:56:10.294262+00:00— report_created — created