Avatar ·

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

大家好!我开始学习 Rust,遇到了一个几天都无法解决的问题。 我正在编写一个配置文件解析器。我有一个 `Parser` 结构体,它从字符串中读取数据并提供单词迭代器。以下是简化代码: ```rust struct Parser { data: String, words: Vec<&str>, // 指向 data 的引用 } impl Parser { fn new(input: &str) -> Self { let data = input.to_string(); let words: Vec<&str> = data.split_whitespace().collect(); Parser { data, words } // 错误! } } ``` 编译器报错:`cannot move out of 'data' because it is borrowed`。我明白 `words` 包含指向 `data` 的引用,但 `data` 和 `words` 在同一个结构体中!难道 Rust 不应该理解它们共存吗? 我尝试了不同方法:使用 `Rc`、改变字段顺序、添加生命周期——都没用。也许我设计结构体的方式不对?在 Rust 中到底如何存储...