有沒有一種性能或風格的理由來選擇下列形式之一來從Rust中的文字創建String?從文字創建字符串的首選方式是什麼?
"hello world".to_string()
format!("hello world")
String::from("hello world")
有沒有一種性能或風格的理由來選擇下列形式之一來從Rust中的文字創建String?從文字創建字符串的首選方式是什麼?
"hello world".to_string()
format!("hello world")
String::from("hello world")
Rust編譯器內部和Rust中的慣用方式是使用to_string
。它在編譯器中以這種方式完成,並由Alex Crichton在三次請求(1,2,3)中嘗試更改此請求。
參數是to_string
最清楚地定義了你想要的。在性能方面,to_string
和format!
都比String::from
慢。但是,一旦我們獲得了專業化的知識,他們很可能會執行完全相同的任務。
這就是說,clippy絨毛對"abc".to_string()
和建議"abc".to_owned()
。
確切的鏈接到clippy的警告(與基本原理):https://github.com/Manishearth/rust-clippy/wiki#str_to_string –
有趣。在大多數示例中,[String documentation](https://doc.rust-lang.org/stable/std/string/struct.String.html)使用'String :: from'。我想知道如果'to_string'是首選的方法應該改變。 –
@JimmyCuadra我不認爲它應該。 'to_string'是一種核心開發者的首選方法,而不是首選方法。有反對它的性能參數(參見例如[this](https://github.com/shepmaster/sxd-document/commit/4f29dee8ee4e98653b10778fb660ddc76f5debc6)),而且我並不真的認爲'to_string'比'字符串:: from'。 – fjh
至少,避免使用'format!',因爲格式化機器對於這樣直接的翻譯來說是重量級的。 –
**提醒所有人將回答**:StackOverflow不是論壇,因此不是關於*辯論*;答案應該爭取**客觀性**並得到權威性參考(如官方風格指南或核心開發者的意見)的支持。 –
@MatthieuM。 to_string()也使用格式化機制。 – fjh