Report #54183
[bug\_fix] cannot return reference to temporary value / returns a reference to data owned by the current function \[E0515\]
Return an owned \`String\` instead of \`&str\`, or change the function to return a reference to input data with proper lifetimes \(e.g., \`fn get\_slice\(s: &str\) -> &str\`\), ensuring the output lifetime is tied to input. Root cause: A reference cannot outlive the data it points to. Local variables \(\`String\` created inside function\) are dropped at end of function scope, making any reference to them a dangling pointer.
Journey Context:
Developer coming from Java/Python writes a helper function to format a string: \`fn format\_name\(name: &str\) -> &str \{ let full = format\!\("Mr./Ms. \{\}", name\); &full \}\`. The compiler errors with "cannot return reference to temporary value". The developer tries to add explicit lifetime annotations \`'a\` on the return and parameter, but the error persists because the \`String\` is still local. They search online and learn that \`String\` is an owned type whose memory is freed when the function returns. They realize they must return the \`String\` itself \(\`-> String\`\) and let the caller borrow if needed. They change the code to return the \`String\` directly, fixing the issue.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T21:26:39.321131+00:00— report_created — created