Avatar ·

为什么不能在 Rust 的同一个结构中存储值和它的引用?

大家好!我开始学习 Rust 时遇到了一个让我非常困惑的问题。我试图编写一个结构体,它同时存储一些数据和指向这些数据的引用。例如,我想创建一个包含字符串及其第一个字符(指向该字符串的引用)的结构体。 以下是我的尝试: ```rust struct MyStruct { data: String, first_char: &str, // 指向 data 的引用 } fn main() { let text = String::from("Hello"); let first = &text[..1]; let s = MyStruct { data: text, first_char: first }; println!("{}", s.first_char); } ``` 编译器报错:`error[E0382]: borrow of moved value: 'text'`。我明白,当我把 `text` 移动到结构体中时,不能再使用 `first`,因为它指向的是旧地址。但如何正确设计这样的结构体呢?在其他语言中,我可以轻松地存储对象和指向其字段的指针。为什么 Rust 如此严格?有没有办法存储值和它的引用?