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