当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust drop用法及代码示例


本文简要介绍rust语言中 Function std::mem::drop 的用法。

用法

pub fn drop<T>(_x: T)

处理一个值。

这是通过调用 Drop 的参数实现来实现的。

这对于实现的类型实际上没有任何作用Copy,例如整数。这些值被复制并然后移动到函数中,因此该值在此函数调用后仍然存在。

这个函数并不神奇;它的字面意思是

pub fn drop<T>(_x: T) { }

因为_x 被移动到函数中,所以在函数返回之前它会被自动删除。

例子

基本用法:

let v = vec![1, 2, 3];

drop(v); // explicitly drop the vector

由于 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); // relinquish the mutable borrow on this slot

let borrow = x.borrow();
println!("{}", *borrow);

实现 Copy 的整数和其他类型不受 drop 影响。

#[derive(Copy, Clone)]
struct Foo(u8);

let x = 1;
let y = Foo(2);
drop(x); // a copy of `x` is moved and dropped
drop(y); // a copy of `y` is moved and dropped

println!("x: {}, y: {}", x, y.0); // still available

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Function std::mem::drop。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。