首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在“and”上执行“on”和“`Borrow`”

在“and”上执行“on”和“`Borrow`”
EN

Stack Overflow用户
提问于 2022-11-04 23:00:40
回答 1查看 41关注 0票数 2

在标准库中,Cow以不同的方式实现AsRefBorrow

AsRef中,它返回self

代码语言:javascript
复制
impl<T: ?Sized + ToOwned> AsRef<T> for Cow<'_, T> {
    fn as_ref(&self) -> &T {
        self
    }
}

Borrow中,它返回&**self

代码语言:javascript
复制
impl<'a, B: ?Sized> Borrow<B> for Cow<'a, B>
where
    B: ToOwned,
    <B as ToOwned>::Owned: 'a,
{
    fn borrow(&self) -> &B {
        &**self
    }
}

这差别很重要吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-05 00:07:49

两者之间没有明显的差别,它们可以毫无问题地交换。前者使用隐式deref强制,后者使用显式取消引用。两者都能够将&Cow<'_, T>转换为&T,因为Cow实现了Deref

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74323768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档