gpt4 book ai didi

rust - 如何直接创建一个字符串?

转载 作者:行者123 更新时间:2023-12-03 11:49:21 24 4
gpt4 key购买 nike

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

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

而不是
func1("fdsfdsfd".to_string())

我可以做这样的事情:
func1(s"fdsfdsfd")

最佳答案

TL; DR:

Rust 1.9str::to_stringstr::to_ownedString::fromstr::into都具有相同的性能特征。使用任何您喜欢的。

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

在Rust 1.9之前,strto_string实现利用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 - 如何直接创建一个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60668549/

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