本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。