此代码段不会编译,因为struct A实例比s2其在其字段中保存的引用更长s.没问题.
struct A<'a> {
s: &'a usize,
}
let s1 = 100;
let mut a = A { s: &s1 };
{
let s2 = 1000;
a.s = &s2;
}
Run Code Online (Sandbox Code Playgroud)
在字符串文字的相同情况下,它编译.为什么?
struct A<'a> {
s: &'a str,
}
let s1 = "abc";
let mut a = A { s: &s1 };
{
let s2 = "abcd";
a.s = &s2;
}
Run Code Online (Sandbox Code Playgroud)