Почему при передаче владения объектом другой переменной в rust меняется адрес объекта?
fn main() {
let mut s = String :: from("hello");
let n = &mut s as *mut String;
println!("n = {:p}", n);
let mut s1 = s;
let n1 = &mut s1 as *mut String;
println!("n1 = {:p}", n1);
}
Отчасти от того что в Rust нет такого понятия как "объект" - оно просто не нужно.
Потому что ты сам взял адрес переменной.
&mut s и &mut s1.
Две разные переменные будут физически располагаться в разных местах => адреса у них будут разные
Phys_Math_Man, нет. Объект - это объект, а переменная - это переменная.
Да и не используется в rust такое понятие как объект.
Предположу, что у тебя на самом деле другой вопрос: перемещается ли физически содержимое строки при этом? (Нет, не перемещается)
А ещё ты, вероятно, думаешь, что в других языках, с которыми ты знаком, это не так? (Нет, в других языках абсолютно то же самое. Просто ты, скорее всего, брал не адрес переменной, а адрес объекта в куче, который в этой переменной хранился)