AsRef AsMut
std::convert::AsRef 和 std::convert::AsMut 用於廉價地將型別轉換為引用。對於 A 和 B 型別,
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,還可以接受 OsStr,OsString,str,String 和 PathBuf 的隱式轉換,因為這些型別都實現了 AsRef<Path>。