我的理解是,当类型实现的变量Drop
超出范围时,fn drop(&mut self)
会插入对该函数的调用,并将新创建的可变引用传递给超出范围的变量。
但是,如果变量是不可变绑定的,并且可变借用它是非法的,这怎么可能呢?这是我正在谈论的一个例子:
fn main() {
let x = vec![1, 2, 3];
let y = &mut x;
}
这会产生以下错误:不能x
像预期的那样借用不可变的局部变量。
x
当被丢弃时必须发生类似的事情,因为drop
需要一个可变引用。