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

Asn*_*ari 3 rust

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

在这两种情况下,堆栈和堆分配有什么区别吗?

Mas*_*inn 5

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

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

然而,当涉及到&str/String他们做同样的事情(就像"".to_owned())。

在这两种情况下,堆栈和堆分配有什么区别吗?

正如 joelb 的链接所表明的那样,在 Rust 1.9 之前"".to_string(),它在整个字符串格式化机制中明显比替代品慢。情况不再如此。

[0]ToString如果结构实现Display[1]也会自动实现

[1] 功能s.to_string()上等价于format!("{}", s),通常建议不要ToString直接实现,除非绕过格式化机制可以提供显着的性能改进(这就是 str/String 这样做的原因)