gpt4 book ai didi

rust - 如何直接创建一个String?

转载 作者:行者123 更新时间:2023-12-03 11:27:10 31 4
gpt4 key购买 nike

有什么方法可以避免在我需要字符串时调用 .to_string() 吗?例如:

fn func1(aaa: String) -> ....

而不是

func1("fdsfdsfd".to_string())

我可以做这样的事情吗:

func1(s"fdsfdsfd")

最佳答案

长话短说:

截至Rust 1.9 , str::to_string, str::to_owned, String::from, str::into 都有相同的性能特征。使用您喜欢的任何一个。


将字符串切片 (&str) 转换为拥有的字符串 (String) 的最明显和惯用的方法是使用 ToString::to_string .这适用于任何实现 Display 的类型.这包括字符串切片,还包括整数、IP 地址、路径、错误等。

在 Rust 1.9 之前,to_stringstr 实现利用了 formatting infrastructure .虽然它有效,但它有点矫枉过正,并不是性能最高的路径。

一个更简单的解决方案是使用 ToOwned::to_owned ,这是为具有“借用”和“拥有”对的类型实现的。是implemented in an efficient manner .

另一种轻量级解决方案是使用 Into::into它利用了 From::from .这也是implemented efficiently .


对于您的特定情况,最好的办法是接受&str,如thirtythreeforty answered .然后你需要做零分配,这是最好的结果。

一般来说,如果我需要分配一个字符串,我可能会使用 into — 它只有 4 个字母长 ^_^。在 Stack Overflow 上回答问题时,我将使用 to_owned,因为它更清楚发生了什么。

关于rust - 如何直接创建一个String?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63174074/

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