Интересно, использует ли Rust какой-либо идентификатор экземпляра для каждого объекта за кулисами, и если да, то можно сделать видимым.Отслеживаются уникальные идентификаторы объектов, и можем ли мы их распечатать?
Рассмотрим
struct SomeStruct ;
fn main() {
let some_thing = SomeStruct;
println!("{:UniqueId}", some_thing);
let another = some_thing;
println!("{:UniqueId}", another);
}
Я использую формат строки псевдо с {:UniqueId}
здесь. В этом случае он может распечатать
4711
4712
Я знаю, что Rust делает побистую копию, и я хочу сделать это на самом деле видимым. Если бы у меня был такой идентификатор экземпляра, я мог бы сделать это видимым, сравнив идентификаторы.
Возможно, существует альтернативный способ достижения такого же.
Для вашего примера 'SomeStruct' не' Copy'able, поэтому он будет перемещен. Когда что-то двигается, вы хотите, чтобы ID объекта был таким же или другим? – Shepmaster
Но перемещение также просто побитовое копирование с той разницей, что старое место становится недействительным (перемещение собственности). Поэтому в основном я хочу сделать видимым, что это действительно разные куски памяти;) – Christoph
* «Но движение тоже просто побитовое копирование» * не обязательно. В вашем примере ничего не будет скопировано, потому что нет ничего ** для ** копирования :-). В общем, я считаю, что компилятор также может свободно оптимизировать ходы, которые не изменяют поведение программы. – Shepmaster