當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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