Avatar ·

如何修复 Rust 中的 "use of moved value" 错误?

你好!我开始学习 Rust 并不断遇到 "use of moved value" 错误。下面是一个简单的例子会触发它: ```rust fn main() { let s = String::from("привет"); let t = s; println!("{}", s); // 错误:use of moved value: `s` } ``` 我理解 Rust 严格跟踪所有权,但不知道如何正确地在变量和函数之间传递数据。例如,我想写一个函数,它接受一个字符串,对其进行一些操作,然后我想在 main 中再次使用这个字符串: ```rust fn process(s: String) -> String { // 一些处理 s } fn main() { let my_string = String::from("тест"); let result = process(my_string); println!("{}", my_string); // 又报错了! } ``` 为什么会这样?在 C++ 中,我只需通过引用传递或复制,但在这里行不通。如何正确组织代码以避免这个错误?请用例子解释什么是所有权、借用