部分移动
Within the destructuring of a single variable, both by-move
and by-reference
pattern bindings can be used at the same time. Doing this will result in a partial move of the variable, which means that parts of the variable will be moved while other parts stay. In such a case, the parent variable cannot be used afterwards as a whole, however the parts that are only referenced (and not moved) can still be used. Note that types that implement the Drop
trait cannot be partially moved from, because its drop
method would use it afterwards as a whole.
(在这个例子中,我们将 age
变量存储在堆上以说明部分移动:删除上面代码中的 ref
会导致错误,因为 person.age
的所有权会被移动到变量 age
。如果 Person.age
存储在栈上,就不需要 ref
,因为 age
的定义会从 person.age
复制数据而不是移动它。)