pub fn drop<T>(_x: T)
Expand description
处理一个值。
通过调用 Drop
的参数实现来实现。
这对于实现 Copy
的类型实际上不起作用,例如
integers.
这样的值被复制并将 then 移到函数中,因此该值在此函数调用之后仍然存在。
这个功能并不神奇。它的字面定义为
pub fn drop<T>(_x: T) { }
Run由于 _x
已移入函数,因此它会在函数返回之前自动丢弃。
Examples
基本用法:
let v = vec![1, 2, 3];
drop(v); // 显式丢弃 vector
Run由于 RefCell
在运行时强制执行借用规则,因此 drop
可以发布 RefCell
借用:
use std::cell::RefCell;
let x = RefCell::new(1);
let mut mutable_borrow = x.borrow_mut();
*mutable_borrow = 1;
drop(mutable_borrow); // 放弃该插槽上的可变借用
let borrow = x.borrow();
println!("{}", *borrow);
Run实现 Copy
的整数和其他类型不受 drop
的影响。
#[derive(Copy, Clone)]
struct Foo(u8);
let x = 1;
let y = Foo(2);
drop(x); // `x` 的副本已移动并丢弃
drop(y); // `y` 的副本已移动并丢弃
println!("x: {}, y: {}", x, y.0); // 仍然可用
Run