小编Rem*_*i D的帖子

为什么 Borrow 和 AsRef 的实现方式不同?

BorrowRust 中的和特征AsRef非常相似。如果我理解正确的话,它们在同一类型上实现时具有完全相同的签名(方法名称除外),区别在于它们的使用方式。

但是,当您查看它们的实现时,例如,Vec<T>就会发现细微的差别:

切片.rs

#[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)

向量.rs

#[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

17
推荐指数
1
解决办法
1175
查看次数

标签 统计

rust ×1