AsRef AsMut

std::convert::AsRefstd::convert::AsMut 用於廉價地將型別轉換為引用。對於 AB 型別,

impl AsRef<B> for A

表示 &A 可以轉換為 &B

impl AsMut<B> for A

表示 &mut A 可以轉換為 &mut B

這對於在不復制或移動值的情況下執行型別轉換很有用。標準庫中的一個例子是 std::fs::File.open()

fn open<P: AsRef<Path>>(path: P) -> Result<File>

這使得 File.open() 不僅可以接受 Path,還可以接受 OsStrOsStringstrStringPathBuf 的隱式轉換,因為這些型別都實現了 AsRef<Path>