2.9.5 避免自引用结构体
1分钟内可阅读完
译文 · 基于 Learning Rust
避免自引用结构体
所谓自引用,是指你有一个字段是引用,而该引用指向同一结构体中的另一个字段(或字段的内容)。
| |
构造这种自引用结构体的唯一安全方式是接受 &'a mut Snek<'a>,获取指向 owned 字段的 &'a str,并将其赋给 borrowed 字段。
| |
如前所述, 这是一种反模式,因为你不能再直接使用自引用结构体。使用它的唯一方式是通过需要 &'a mut self 的方法调用返回的(重借用的)返回值。
所以从技术上讲是可能的,但限制如此之大,几乎总是毫无用处。
试图创建自引用结构体是新手常见的失误,你可能会看到对这类问题的回答大致是"在 safe Rust 中你不能这样做"。