Rust as#deref函数不';我不能改变我的具体类型

Rust as#deref函数不';我不能改变我的具体类型,rust,optional,Rust,Optional,我想用将我的选项转换为选项,但编译器似乎误解了我的意图。如果我用.map(|e | e.as_str())替换它它会工作 使用std::collections::HashMap; 西普菲尔德{ fn from(&self)->选项; } HashMap的impl SipField{ fn来自(&self)->选项{ self.get(“from”) .或| | | self.get(“f”)) .然后(| i | i.first()) .as_deref() } } 错误[E0308]:类型不

我想用将我的
选项
转换为
选项
,但编译器似乎误解了我的意图。如果我用
.map(|e | e.as_str())替换它
它会工作

使用std::collections::HashMap;
西普菲尔德{
fn from(&self)->选项;
}
HashMap的impl SipField{
fn来自(&self)->选项{
self.get(“from”)
.或| | | self.get(“f”))
.然后(| i | i.first())
.as_deref()
}
}
错误[E0308]:类型不匹配
-->src/lib.rs:9:9
|
9 |/self.get(“from”)
10 | | |或|其他(| | self.get(“f”))
11 | |然后(| i | i.first())
12 | |作为
||uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu^应为'str',找到结构'std::string::string`
|
=注意:应为enum`std::option::option`
找到枚举'std::option::option'`

请注意,
as_deref
可以将
选项
转换为
选项
,但是您有一个
选项
,因此编译器会将
选项
转换为
选项
。@Jmb不应该有两个作为_deref()工作吗?@Stargateur:如果有一个
作为_deref()
调用将一个
选项
转换为一个
选项
,两个
as_deref()
调用将一个
选项
转换为一个
选项