Rust 的String 和str 有什么区别

我有 C++ 背景,我发现用C++ 术语思考String和思考非常有用:&str

  • RustString就像std::string; 它拥有内存并执行管理内存的脏活。
  • Rust&str就像一个char*(但更复杂一点);它把我们指向一个块的开头,就像你可以得到一个指向std::string.

他们中的任何一个都会消失吗?我不这么认为。它们有两个目的:

String保留缓冲区,使用起来非常实用。&str是轻量级的,应该用于“查看”字符串。您可以搜索、拆分、解析甚至替换块,而无需分配新内存。

&str可以查看 a 的内部,String因为它可以指向一些字符串文字。以下代码需要将文字字符串复制到String托管内存中:

let a: String = "hello rust".into();

以下代码允许您使用文字本身而无需复制(虽然只读)

let a: &str = "hello rust";

参阅:
https://stackoverflow.com/questions/24158114/what-are-the-differences-between-rusts-string-and-str

分类: 默认 标签: 发布于: 2022-03-22 11:37:36, 更新于: 2022-03-22 11:37:36