2015-11-13 51 views
2

有沒有一種性能或風格的理由來選擇下列形式之一來從Rust中的文字創建String?從文字創建字符串的首選方式是什麼?

"hello world".to_string() 
format!("hello world") 
String::from("hello world") 
+0

至少,避免使用'format!',因爲格式化機器對於這樣直接的翻譯來說是重量級的。 –

+0

**提醒所有人將回答**:StackOverflow不是論壇,因此不是關於*辯論*;答案應該爭取**客觀性**並得到權威性參考(如官方風格指南或核心開發者的意見)的支持。 –

+1

@MatthieuM。 to_string()也使用格式化機制。 – fjh

回答

5

Rust編譯器內部和Rust中的慣用方式是使用to_string。它在編譯器中以這種方式完成,並由Alex Crichton在三次請求(1,2,3)中嘗試更改此請求。

參數是to_string最清楚地定義了你想要的。在性能方面,to_stringformat!都比String::from慢。但是,一旦我們獲得了專業化的知識,他們很可能會執行完全相同的任務。


這就是說,clippy絨毛對"abc".to_string()和建議"abc".to_owned()

+2

確切的鏈接到clippy的警告(與基本原理):https://github.com/Manishearth/rust-clippy/wiki#str_to_string –

+0

有趣。在大多數示例中,[String documentation](https://doc.rust-lang.org/stable/std/string/struct.String.html)使用'String :: from'。我想知道如果'to_string'是首選的方法應該改變。 –

+0

@JimmyCuadra我不認爲它應該。 'to_string'是一種核心開發者的首選方法,而不是首選方法。有反對它的性能參數(參見例如[this](https://github.com/shepmaster/sxd-document/commit/4f29dee8ee4e98653b10778fb660ddc76f5debc6)),而且我並不真的認爲'to_string'比'字符串:: from'。 – fjh

相關問題