@Phys_Math_Man

Почему при передаче владения объектом другой переменной в 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);

}


вывод при этом такой:

n = 0x3fec59f980
n1 = 0x3fec59f9e0

Почему объект куда-то перемещается?
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka
Токсичный шарпист
Отчасти от того что в Rust нет такого понятия как "объект" - оно просто не нужно.
Потому что ты сам взял адрес переменной.
&mut s и &mut s1.
Две разные переменные будут физически располагаться в разных местах => адреса у них будут разные
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы