Rust 调用函数时,如何自动应用From特性将其转换为泛型参数类型?

Rust 调用函数时,如何自动应用From特性将其转换为泛型参数类型?,rust,Rust,在下面的代码中显式地使用String::from,但是如何使它自动使用from(&'a std::ffi::OsString); 字符串的impl>{ fn from(s:OsStringWrap)->字符串{ s、 0.to_string_lossy().to_string() } } 发布fn插入(_键:S,_值:&T){} fn main(){ 对于std::env::vars_os()中的(键、值){ //HOW-TO:auto-use From您的请求目前的措辞是不可能的。您的inse

在下面的代码中显式地使用
String::from
,但是如何使它自动使用
from(&'a std::ffi::OsString);
字符串的impl>{
fn from(s:OsStringWrap)->字符串{
s、 0.to_string_lossy().to_string()
}
}
发布fn插入(_键:S,_值:&T){}
fn main(){
对于std::env::vars_os()中的(键、值){

//HOW-TO:auto-use From您的请求目前的措辞是不可能的。您的
insert
函数接受泛型类型,因此没有任何东西可以告诉编译器应该转换为什么类型。这个小示例相当于:

fn演示({uu:T)}
fn main(){
演示(true.into());
}
由于编译器不知道选择转换为什么具体类型,程序员必须指定它

您可能会更改函数,以接受任何可以转换为
字符串的内容(例如
T:into
),或被引用为
&str
(例如
T:AsRef

另见:


。这也适用于
OsString
/
&OsStr
。为什么这段代码使用
序列化
?这对问题来说似乎并不重要。@Shepmaster
插入
方法是一个真实的例子,因此您有一个函数请求
t:Serialize
…而不是实现
Serialize
for
OsStringWrap
您首先要将其转换为
字符串
,并且您希望
字符串
-转换是自动的?似乎有些迂回。为什么不直接实现
序列化