在Rust标准库中,存在很多常用的工具类特型,它们能帮助我们写出更具有Rust风格的代码。
今天我们要学习的AsRef
和AsMut
,和前面学习的Deref和DerefMut有那么一点混淆的地方。
当一个类型U实现了AsRef<T>
,那么我们可以高效的从U借出一个T的引用。AsMut
对应的是借出可变引用。它们的定义如下:
trait AsRef<T: ?Sized> {
fn as_ref(&self) -> &T;
}
trait AsMut<T: ?Sized> {
fn as_mut(