String::from("")
和"".to_string()
在Rust中有何不同?
在两种情况下,堆栈和堆的分配是否有区别?
String::from("")
和"".to_string()
在Rust中有何不同?
它们是不同协议(特征)的一部分:std::convert::From和alloc::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这样做的原因) )