#[derive(Debug)]
struct My<'a> {
x: &'a mut Vec<u32>,
z: u32,
}
fn main() {
let mut s = vec![1, 2, 3, 4];
let mut ok = My { x: &mut s, z: 44 };
// let x = &ok.x[..];
let mut f = vec![4, 3, 2, 1];
ok.x = &mut f;
s = vec![];
// println!("{:?}", x);
println!("{:?}", ok);
}
Errors:
Compiling playground v0.0.1 (/playground)
warning: value assigned to `s` is never read
--> src/main.rs:16:5
|
16 | s = vec![];
| ^
|
= note: `#[warn(unused_assignments)]` on by default
= help: maybe it is overwritten before being read?
error[E0506]: cannot assign to `s` because it is borrowed
--> src/main.rs:16:5
|
10 | let mut ok = My { x: &mut s, z: 44 };
| ------ borrow of `s` occurs here
...
16 | s = vec![];
| ^ assignment to borrowed `s` occurs here
17 | // println!("{:?}", x);
18 | println!("{:?}", ok);
| -- borrow later used here
For more information about this error, try `rustc --explain E0506`.
warning: `playground` (bin "playground") generated 1 warning
error: could not compile `playground` due to previous error; 1 warning emitted