Report #13637
[bug\_fix] use of moved value \(E0382\)
Clone the value before moving, use references \(\`&x\` or \`&mut x\`\), or restructure to avoid the move. Root cause: Rust moves non-Copy types by default; once a value is moved into a new binding, function argument, or collection, the original binding is invalidated to prevent double-free and use-after-free.
Journey Context:
A developer creates a \`String\` and assigns it to a variable \`s\`. They then pass it to a function \`process\(s\)\` and immediately try to use \`s\` again on the next line, perhaps in a \`println\!\`. The compiler emits E0382: "use of moved value: \`s\`". The developer tries \`process\(s.clone\(\)\)\` which fixes it but worries about performance. They realize they can change the function signature from \`fn process\(x: String\)\` to \`fn process\(x: &str\)\` and pass \`&s\`, avoiding the move. Alternatively, they use \`s.clone\(\)\` if they truly need two owners.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T19:17:38.064697+00:00— report_created — created