2015-05-29 57 views
3

我有以下通用函數,現在想要將任何給定類型轉換爲字符串。to_string與泛型參數

fn write_row<T>(row: T) { 
    let s: String = row.to_string(); 
} 

不過這顯然不會工作,因爲to_string沒有爲類型T實現

所以我的問題是如何將我檢查了參數的類型,然後根據需要應用to_string哪有我告訴編譯器,我現在知道變量是一個定義的類型?

回答

2

你可以告訴T必須實現ToString特質像這樣的編譯器:

use std::string::ToString; 

fn write_row<T: ToString>(row: T) { 
    let s: String = row.to_string(); 
} 
+0

大,但我會做什麼,如果我還想允許它們沒有什麼to_string方法串... – TM90

+0

@ TM90你什麼意思?如果它是一個字符串,則不需要調用'to_string' ... – squiguy

+0

我的意思是,如果我想允許write_row方法的字符串,然後跳過to_string部分 – TM90