本文简要介绍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 drop_in_place用法及代码示例
- Rust debug_assert用法及代码示例
- Rust default用法及代码示例
- Rust decode_utf16用法及代码示例
- Rust debug_assert_eq用法及代码示例
- Rust debug_assert_ne用法及代码示例
- Rust debug_assert_matches用法及代码示例
- Rust discriminant用法及代码示例
- Rust dbg用法及代码示例
- Rust UdpSocket.set_multicast_loop_v6用法及代码示例
- Rust i64.overflowing_add_unsigned用法及代码示例
- Rust Box.downcast用法及代码示例
- Rust BTreeMap.last_key_value用法及代码示例
- Rust str.make_ascii_uppercase用法及代码示例
- Rust u128.checked_pow用法及代码示例
- Rust usize.wrapping_mul用法及代码示例
- Rust AtomicU8.fetch_sub用法及代码示例
- Rust PanicInfo.payload用法及代码示例
- Rust MaybeUninit.assume_init_mut用法及代码示例
- Rust String.try_reserve用法及代码示例
- Rust Mutex.new用法及代码示例
- Rust f32.exp用法及代码示例
- Rust Result.unwrap_or_else用法及代码示例
- Rust slice.sort_unstable_by_key用法及代码示例
- Rust Formatter.precision用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Function std::mem::drop。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。