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
forOsStringWrap
您首先要将其转换为字符串
,并且您希望字符串
-转换是自动的?似乎有些迂回。为什么不直接实现序列化
?