天天看點

022 Rust死靈書之污染

介紹

污染

  • 所有的非安全代碼都必須保證最小異常安全性,是以并不是所有的類型都能保證最大異常安全性;
  • 異常發生時所有的東西都應該被銷毀,例如:給一個線程傳遞一個Vec,而線程panic了,此時Vec的狀态并不重要,因為它會被銷毀掉。
  • 但是一些類型會在發生panic的時候偷偷隐藏資料的值(這種就需要特别的注意)。這些類型會在遇到panic時可能污染自己的。污染是指,通常會禁止其他人正常的使用它。例如标準庫中的Mutex類型。(原因就是panic時,Mutex可能隻修改了一半,是以污染自己,禁止使用)。