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