移动整个 Box 时 Box 能否移动其内容?
Can Box move its contents when the whole Box is moved?
如果我 Box::new
一个值,取一个指向它的指针(借用检查器不允许取一个引用,因为我要移动盒子),然后移动 Box
,价值会发生变化(例如重新分配)吗?
我认为 Box
只是存储值地址,因此移动 Box
只会移动地址。因此,当其内容不变被借用时,借用检查器禁止移动它是否有原因?
不,移动 a Box
不会移动堆中的值。
Box
保证:
a Box<T>
is guaranteed to be represented as a single pointer
并且 Rust 保证移动总是按位复制(如果它们完全复制的话)。
Is there therefore a reason why borrow checker prohibits moving it when its contents are immutably borrowed?
这包括:
如果我 Box::new
一个值,取一个指向它的指针(借用检查器不允许取一个引用,因为我要移动盒子),然后移动 Box
,价值会发生变化(例如重新分配)吗?
我认为 Box
只是存储值地址,因此移动 Box
只会移动地址。因此,当其内容不变被借用时,借用检查器禁止移动它是否有原因?
不,移动 a Box
不会移动堆中的值。
Box
保证:
a
Box<T>
is guaranteed to be represented as a single pointer
并且 Rust 保证移动总是按位复制(如果它们完全复制的话)。
Is there therefore a reason why borrow checker prohibits moving it when its contents are immutably borrowed?
这包括: