Пример кода:
fn main() {
let mut y = &5; // 1
println!("{:p}", y);
{
let x = &2; // 2
println!("{:p}", x);
y = x;
}
y = &3; // 3
println!("{:p}", y);
}
Если третье назначение содержит &3
, то вывод кода:
0x558e7da926a0
0x558e7da926a4
0x558e7da926a8
Если третье назначение содержит &2
(то же значение со вторым назначением), тоВывод кода:
0x558e7da926a0
0x558e7da926a4
0x558e7da926a4
Если третье назначение содержит &5
(то же значение, что и в первом назначении), то вывод кода:
0x558e7da926a0
0x558e7da926a4
0x558e7da926a0
Почему ржавчина не освобождает память, а использует ее повторно, еслизначение присвоения совпадает или же выделите новый блок памяти в противном случае?