Closed
Description
Code
fn s() -> String {
let a = String::new();
dbg!(a);
return a;
}
Current output
Compiling playground v0.0.1 (/playground)
error[E0382]: use of moved value: `a`
--> src/lib.rs:4:12
|
2 | let a = String::new();
| - move occurs because `a` has type `String`, which does not implement the `Copy` trait
3 | dbg!(a);
| ------- value moved here
4 | return a;
| ^ value used here after move
|
help: borrow this binding in the pattern to avoid moving the value
--> /playground/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/macros.rs:364:13
|
36| ref tmp => {
| +++
For more information about this error, try `rustc --explain E0382`.
error: could not compile `playground` (lib) due to 1 previous error
Desired output
help: consider borrowing instead of transferring ownership.
dbg!(&a);
Rationale and extra context
No response
Other cases
No response
Rust Version
Example was in the playground: "Build using the Nightly version: 1.77.0-nightly (2024-01-23 5d3d3479d774754856db)"
My machine has the same message:
rustc 1.76.0-nightly (a96d57bdb 2023-12-15)
binary: rustc
commit-hash: a96d57bdb6d2bb6d233d7d5aaefc2995ab99be01
commit-date: 2023-12-15
host: aarch64-apple-darwin
release: 1.76.0-nightly
LLVM version: 17.0.6
Anything else?
No response