BorrowRust 中的和特征AsRef非常相似。如果我理解正确的话,它们在同一类型上实现时具有完全相同的签名(方法名称除外),区别在于它们的使用方式。
但是,当您查看它们的实现时,例如,Vec<T>就会发现细微的差别:
#[stable(feature = "rust1", since = "1.0.0")]
impl<T> Borrow<[T]> for Vec<T> {
fn borrow(&self) -> &[T] {
&self[..]
}
}
Run Code Online (Sandbox Code Playgroud)
#[stable(feature = "rust1", since = "1.0.0")]
impl<T> AsRef<[T]> for Vec<T> {
fn as_ref(&self) -> &[T] {
self
}
}
Run Code Online (Sandbox Code Playgroud)
我相信这里的实施AsRef得益于Deref强制。但不能使用相同的机制来Borrow实现吗?
rust ×1