Rust: error[E0507]: cannot move out of `self.name` which is behind a shared reference
You tried to take ownership of a value through a reference (or from a Vec/Option behind &).
error[E0507]: cannot move out of `self.name` which is behind a shared referencecannot move out of index of `Vec<String>`cannot move out of borrowed contenterror[E0507]: cannot move out of a mutable referencemove occurs because has type which does not implement the `Copy` trait E0507 Meaning
Clone (self.name.clone()), borrow (&self.name), use Option::take()/mem::replace/mem::take to move out safely, or change the function to take self by value. vec[i] can't move non-Copy elements; use &vec[i] or vec.remove(i).
Common causes
- Moving a String/Vec field out of
&self - Moving out of
vec[i] Optionfield behind&mut selfmoved withouttake()- Pattern matching moving out of a reference without
ref/& - Returning an owned value from a borrowed field
⚡ Quick fix
.clone()when cheap, or return&Tself.field.take()/std::mem::take(&mut self.field)match &self.x { Some(v) => ... }
Detailed fix by platform
Rust
let name = std::mem::take(&mut self.name);
How to diagnose
- Access — Through & or &mut?
- Type — Copy?
- Fix — take/clone/borrow?
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
- Blocking waiting for file lock on package cache / build directory Cargo: Blocking waiting for file lock on package cache / on build directory
- cargo: failed to get from registry (spurious network error) Cargo: warning: spurious network error (2 tries remaining): [35] SSL connect error / error: failed to download from `https://index.crates.io/...`
- cargo: failed to select a version for the requirement Cargo: error: failed to select a version for the requirement `serde = "^2.0"` — candidate versions found which didn't match: 1.0.197
Most viewed in Rust
Other ways to find it
Where this error sits
Origin: Application & API. Errors that are often confused with or caused by this one (click to open):
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
💬 What worked for others
No tips yet — did something else fix this for you?
Share what worked for you
Tips are checked by an editor before they appear. Links are removed.
Report a correction or suggest an improvement
Last updated 5 Nov 2026