String :: from(“”)&“” .to_string()在Rust中有何不同? [重复]

问题描述 投票:0回答:1

String::from("")"".to_string()在Rust中有何不同?

在两种情况下,堆栈和堆的分配是否有区别?

rust
1个回答
2
投票

String::from("")"".to_string()在Rust中有何不同?

它们是不同协议(特征)的一部分:std::convert::Fromalloc::string::ToString [0]。

但是,当涉及到&str / String时,它们会做同样的事情(与"".to_owned()一样。]

在两种情况下,堆栈和堆的分配是否有区别?

正如joelb的链接所指出的,在Rust 1.19 "".to_string()遍历整个字符串格式化机制之前,它的速度明显慢于替代方法。不再是这种情况。

[[0] ToString也将自动实现,如果该结构实现了Display [1]

[1]从功能上讲s.to_string()等效于format!("{}", s),通常建议直接not直接实现ToString,除非绕过格式化机制可以显着改善性能(这就是为什么str / String这样做的原因) )

© www.soinside.com 2019 - 2024. All rights reserved.