gpt4 book ai didi

rust - 在引用上指定的生存期是否表示引用或对象要生存多长时间?

转载 作者:行者123 更新时间:2023-12-03 11:47:23 26 4
gpt4 key购买 nike

pub struct Foo<'m, T> {
tx: &'m mut T,
}
在这里, 'm是代表引用 tx的生存期,还是指定 T持续多久?
我相信是前者,这意味着 T所引用的 tx类型的对象的生存期必须超过 'm。这是正确的理解吗?

最佳答案

您是正确的:'m是引用的生存期。并且,由于该引用必须有效才能对'm有效,因此它引用的对象必须至少与'm一样长。您可以在编译器错误中看到这一点:
尝试从临时字符串创建'static引用的以下代码:

fn main() {
let x: &'static String = &"foo".to_string();
}
错误,因为该字符串的生命周期不长于引用:
error[E0716]: temporary value dropped while borrowed
--> src/main.rs:2:31
|
2 | let x: &'static String = &"foo".to_string();
| --------------- ^^^^^^^^^^^^^^^^^ creates a temporary which is freed while still in use
| |
| type annotation requires that borrow lasts for `'static`
3 | }
| - temporary value is freed at the end of this statement
对象本身的生存期将用通用语法表示为生存期:
pub struct Foo<'a> {
slice_iter: std::slice::Iter<'a, u32>
}

关于rust - 在引用上指定的生存期是否表示引用或对象要生存多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64850480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com