Rust 的String 和str 有什么区别
我有 C++ 背景,我发现用C++ 术语思考String
和思考非常有用:&str
- Rust
String
就像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