2.5.7 其他场景的不变性

译文 · 基于 Learning Rust

其他场景的不变性

原文链接: https://quinedot.github.io/rust-learning/st-more-invariance.html

虽然 &mut 背后是最常首次遇到不变性的地方,但它也出现在其他地方。

Cell<T> 和 RefCell<T> 在 T 上同样是不变的。

trait 参数也是不变的。因此,带生命周期参数的 trait 可能很难使用。

此外,如果你有像 T: Trait<U> 这样的约束,U 会变成不变的,因为它是 trait 的类型参数。如果你的 U 解析为 &'x V,生命周期 'x 也会是不变的。

关联类型也是不变的。

-> impl Trait 类型也是不变的。

最后修改 August 23, 2026: 更新 (499855b16)