移动整个 Box 时 Box 能否移动其内容?

Can Box move its contents when the whole Box is moved?

如果我 Box::new 一个值,取一个指向它的指针(借用检查器不允许取一个引用,因为我要移动盒子),然后移动 Box,价值会发生变化(例如重新分配)吗?

我认为 Box 只是存储值地址,因此移动 Box 只会移动地址。因此,当其内容不变被借用时,借用检查器禁止移动它是否有原因?

Playground

不,移动 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?

这包括: