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>
。