Report #9060
[bug\_fix] E0515: cannot return value referencing local variable
Return an owned String \(or Vec\) instead of a reference \(&str\), or change the function to accept a reference and return a reference with the same lifetime annotation \(\`fn foo<'a>\(input: &'a str\) -> &'a str\`\).
Journey Context:
Developer is refactoring a function that trims and processes a String. Inside the method, they create a local String, do some formatting, and try to return \`&result\[..\]\` to avoid an allocation, thinking they're being efficient. The compiler hits them with E0515, explaining that the local variable \`result\` is dropped at the end of the function, so the reference would become a dangling pointer. Developer first tries boxing the value \(Box\), but realizes they can't easily return a reference to heap data without the box owning it. They consider using \`Rc\` or \`Arc\`, but that feels like overkill. After checking the error code index, they understand that the only way to return a reference is if the data lives outside the function \(passed in as an argument\). Since they must create the data inside, they change the return type to \`String\` and return the owned value directly. This eliminates the dangling reference issue because ownership is transferred to the caller.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T07:13:36.192373+00:00— report_created — created