2015-05-29 60 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