rust 中 AsRef 的理解?

fn is_hello<T: AsRef<str>>(s: T) {
   assert_eq!("hello", s.as_ref());
}
let s = "hello";
is_hello(s);
let s = "hello".to_string();
is_hello(s);

其中我对AsRef<str> 的理解是 它需要传入参数 s 要是一个字符串引用,而 string &str 都可以转成字符串引用,所以它可以传入?

不知道这个理解有什么错

阅读 1.6k
1 个回答

AsRef

pub trait AsRef<T>where
    T: ?Sized,{
    fn as_ref(&self) -> &T;
}

AsRef<T> 是一个 trait 。T: AsRef<str> 表示 T 是一个实现了 AsRef<str> 这个 trait 的类型。strString 都实现了 AsRef<str>

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进