假设我有两个Pin<T>
,例如我从Box::pin(struct_of_type_T)
得到它们,一个Box
拥有指向T类型的底层值的指针,一个Pin
确保指针指向的值(类型为T
)永远不会移动。
我可以交换“Pinned-box”中的两个指针吗?
pinned_box_1 pinned_box_2
|-------------| |-------------|
| pointer_one |<--swap them--?>| pointer_two |
|-------------| |-------------|
| |
V V
struct_of_type_T_one struct_of_type_T_two
|-------------| |-------------|
| value_one | | value_two |
|-------------| |-------------|
fixed_addr fixed_addr
如果是,我如何交换它们?std::mem::swap
将在这种情况下工作?
1条答案
按热度按时间frebpwbc1#
是的,你可以,你甚至不需要
std::mem::swap
:输出:
注意:这是正文中问题的答案,标题的答案是否定的,这是不可能的,这正是
Pin
的目的,防止值的移动。