Rust中的`str`有什么用处吗?

str没有不借就用的情况?这甚至有意义吗?

我明白之间的差别String&str,但由于有&str也必须有str

回答

你不能用type的做太多事情str,但在很多情况下你会想要引用 type str

  • Box<str>or Rc<str>- 拥有的类型,类似于String,但不能改变以增长或重新分配

  • 任何时候您想要接受可以被视为字符串的任意类型,您都可以使用诸如T: Deref<Target = str>,T: AsRef<str>或 之类的约束T: Borrow<str>。例如HashMap::get具有以下签名:

    pub fn get<Q: ?Sized>(&self, k: &Q) -> Option<&V> where
      K: Borrow<Q>, // K is the key type for the HashMap
      Q: Hash + Eq, 
    

    这意味着您可以拥有HashMap<String, i32>,但可以使用&str键访问值,例如map.get("key")。这里Q将被推断为str,但k参数仍然是&str( &Q)。

    ?Sized该注解装置Q并不需要在编译时已知的大小,明确允许未分级的类型喜欢str使用。


以上是Rust中的`str`有什么用处吗?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>