019 Rust死靈書之資源管理

linghuyichong發表於2021-03-07

本系列錄製的影片主要放在B站上Rust死靈書學習影片

Rust 死靈書相關的原始碼資料在github.com/anonymousGiga/Rustonomi...

OBRM(Ownership Based Resource Management),又被稱為RAII(Resource Acquisition is Initialization,資源獲取即初始化)。該模式簡單來說為:

  • 如果要獲取資源,只需要建立一個管理它的物件;
  • 如果要釋放資源,只要銷燬這個物件,該物件負責回收資源。

建立一個自定義型別的例項的方法只有一種:

  • 先命名,再一次性初始化所有成員;
  • 底層還是呼叫建構函式;

Rust中,賦值和複製建構函式是不存在的,因為Rust型別中有且僅有移動語義。

Rust中提供了兩種和C++中的copy語義相似的功能:Copy和Clone。

Rust透過Drop trait提供一個成熟的自動解構函式,該trait中包含以下方法:

fn drop(&mut self);

drop執行之後,Rust會遞迴的銷燬self的所有成員。

許多人覺得Rust已經消除了資源洩漏資源的可能性,實際應用中也差不多。但是,從理論角度,洩漏是無法避免的。

Rust中其實還有一個製造洩漏的函式,即mem::forget。此函式獲取傳遞給它的值,但是不呼叫它的解構函式。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
令狐一衝

相關文章