W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
既然我們已經(jīng)討論了特征,讓我們談?wù)?Rust 標(biāo)準(zhǔn)庫提供的特定特征,降降特性提供了一種方法,這種方法可以保證即便某個值超出范圍時也能運行代碼。例如:
struct HasDrop;
impl Drop for HasDrop {
fn drop(&mut self) {
println!("Dropping!");
}
}
fn main() {
let x = HasDrop;
// do stuff
} // x goes out of scope here
當(dāng) x 在 main()函數(shù)結(jié)尾超出范圍時,降的代碼將運行。降有一個方法,該方法也被稱為 drop()。它將 self 作為可變參考。
這正是我們想要的!降的機制是非常簡單的,但是有一些微妙之處。例如,值以與它的聲明相反的順序下降。這里還有一個例子:
struct Firework {
strength: i32,
}
impl Drop for Firework {
fn drop(&mut self) {
println!("BOOM times {}!!!", self.strength);
}
}
fn main() {
let firecracker = Firework { strength: 1 };
let tnt = Firework { strength: 100 };
}
這將輸出:
BOOM times 100!!!
BOOM times 1!!!
TNT 在爆竹之前爆炸,因為它是之后被聲明的。后進(jìn)先出。
那降有什么優(yōu)點呢?一般來說,降是用來清理任何與結(jié)構(gòu)相關(guān)聯(lián)的資源。例如,ARC<T> TYPE
類型是一個引用計數(shù)的類型。調(diào)用降時,它將減量引用計數(shù),如果引用的總數(shù)為零,它將清理潛在值。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: