gpt4 book ai didi

string - 为什么 Rust 中的字符串文字是 &str 而不是 String?

转载 作者:行者123 更新时间:2023-12-03 11:23:20 28 4
gpt4 key购买 nike

我只是在问为什么 Rust 决定使用 &str用于字符串文字而不是 String . Rust 是否可以自动将字符串文字转换为 String并将其放在堆上而不是放入堆栈中?

最佳答案

要理解推理,请考虑 Rust 想成为一种系统编程语言。一般来说,这意味着它需要(除其他外)(a)尽可能高效,(b)让程序员完全控制堆内存的分配和释放。 Rust 的一个用例是用于内存非常有限的嵌入式编程。
因此,Rust 不想在并非绝对必要的情况下分配堆内存。字符串字面量在编译时是已知的,可以写入 ro.data可执行文件/库的一部分,因此它们不会消耗堆栈或堆空间。
现在,鉴于 Rust 不想在堆上分配值,它基本上被迫将字符串文字视为 &str :String s 拥有它们的值并且可以移动和删除,但是如何删除位于 ro.data 中的值?你真的不能那样做,所以 &str是完美的搭配。
此外,将字符串文字视为 &str (或更准确地说 &'static str )具有所有优点而没有缺点。它们可以在多个地方使用,可以共享而不必担心使用堆内存并且永远不必删除。此外,它们可以转换为自有 String s 随意,因此将它们作为 String 提供总是可能的,但您只在需要时支付费用。

关于string - 为什么 Rust 中的字符串文字是 &str 而不是 String?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63572130/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com