提问人:杨尚山 提问时间:10/20/2023 更新时间:10/20/2023 访问量:45
选项相对于其参数类型是不变的?
Option is invariant with respect to its argument type?
问:
当我阅读 rfcs-0738-variance 时,我对“选项相对于其参数类型是不变的”感到困惑。我认为它应该是协变的。此外,rfcs 中的代码中没有编译错误,但 rfcs 指出应该有“ERROR: Cannot 推断适当的生存期”。 我很困惑。感谢您的帮助。
#[derive(Debug)]
struct List<'l> {
field1: &'l i32,
field2: Option<&'l i32>,
}
fn foo<'a>(field1: &i32, field2: Option<&i32>) {
let list = List { field1: field1, field2: field2 };
// ERROR: Cannot infer an appropriate lifetime
println!("{:?}", list);
}
fn main() {
}
希望得到答案。我也希望得到你对方差的理解。
答:
2赞
Chayim Friedman
10/20/2023
#1
RFC 解释说,当前(即在此 RFC 之前),所有类型(包括 )都是不变的,因此此代码片段过去会失败。今天,随着这个RFC被接受和实施,情况不再如此(谢天谢地)。Option
评论