以下代码报告错误: borrowed value does not live long enough个
fn main() {
let e = 100;
let mut a = (1,);
let mut b = (&e,);
{
let mut c = (&mut a, &mut b);
let f = &mut c;
f.1 .0 = &(f.0 .0);
}
println!("{:?}", b);
}
但以下代码是正确的:
fn main() {
let e = 100;
let a = (1,);
let mut b = (&e,);
{
let mut c = (&a, &mut b);
let f = &mut c;
f.1 .0 = &(f.0 .0);
}
println!("{:?}", b);
}
为什么?!!
第一个代码的完整错误消息:
error[E0597]: `c` does not live long enough
--> src/main.rs:7:17
|
6 | let mut c = (&mut a, &mut b);
| ----- binding `c` declared here
7 | let f = &mut c;
| ^^^^^^ borrowed value does not live long enough
8 | f.1 .0 = &f.0 .0;
9 | }
| - `c` dropped here while still borrowed
10 | println!("{:?}", b);
| - borrow later used here
For more information about this error, try `rustc --explain E0597`.