E0716: temporary value dropped while borrowed Rust Origin: Application & API Last updated 5 Nov 2026

Rust: error[E0716]: temporary value dropped while borrowed — creates a temporary value which is freed while still in use

A reference points to a temporary that's dropped at the end of the statement.

Exact message you may see error[E0716]: temporary value dropped while borrowedcreates a temporary value which is freed while still in usetemporary value is freed at the end of this statementconsider using a `let` binding to create a longer lived value
Seen on: Rust

Meaning

Bind the temporary to a variable so it lives longer: let s = String::from("x"); let t = s.trim();. Common with .to_string().as_str(), format!(..).as_str(), &String::new() in struct fields, or lock().unwrap().get(...) references.

Common causes

  • foo(&String::from("x")) result kept
  • .to_string().as_str() stored
  • format!(...).trim() stored in a variable
  • Mutex guard temporary
  • Iterator over a temporary collection

⚡ Quick fix

  1. Store the owner in a let first
  2. Return owned data
  3. Avoid chaining borrow after a temporary when keeping the result

Detailed fix by platform

Rust

  1. let owned = format!("{a}-{b}"); let part = owned.trim();

How to diagnose

  1. Temporary — Which expression?
  2. Lifetime — Needed longer?
  3. Fix — let binding?

🔧 Still not fixed?

Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:

Where this error sits

Origin: Application & API. Errors that are often confused with or caused by this one (click to open):

Blocking waiting for file lock on package cache / build directory — Cargo: Blocking waiting for file lock on package cache / on build directory (Rust)Blocking waiting for …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/...` (Rust)cargo: failed to get …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 (Rust)cargo: failed to sele…E0106: missing lifetime specifier — Rust: error[E0106]: missing lifetime specifier — this function's return type contains a borrowed value, but the signature does not say which one of `x`'s 2 lifetimes it is borrowed from (Rust)E0106: missing lifeti…E0505: cannot move out of value because it is borrowed — Rust: error[E0505]: cannot move out of `s` because it is borrowed (Rust)E0505: cannot move ou…E0521: borrowed data escapes outside of function — Rust: error[E0521]: borrowed data escapes outside of function — `data` escapes the function body here (tokio::spawn requires 'static) (Rust)E0521: borrowed data …E0597: borrowed value does not live long enough — Rust: error[E0597]: `x` does not live long enough — borrowed value does not live long enough (Rust)E0597: borrowed value…E0716: te…

Explore the map of this error Full error map →

🧠 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.