我是Rust的初学者,我不理解我遇到的行为。函数1应该返回一个Option类型,但是返回一个&Option类型。我已经通过做函数2解决了这个问题,但我不明白为什么会这样。我在函数中做错了什么?
功能1:
pub fn manage_request(&self, request:String) -> Option<Some type> {
let words : Vec<&str> = request.split_whitespace().collect();
match words[0] {
"attach" => &self.hashmap.get(words[1]),
_ => None,
}
}
功能2:
pub fn manage_request(&self, request:String) -> Option<Some type> {
let words : Vec<&str> = request.split_whitespace().collect();
match words[0] {
"attach" => match &self.hashmap.get(words[1]){
None => None,
Some(x) => Some(x)
}
_ => None,
}
}
下面是rust playground的链接,代码为
如果我错了请纠正我,但我认为你实际上做得很好,但可能遗漏了一个错别字。
在你的游乐场中,你的签名通过说fn manage_request(self)
来消耗自我。如果你把它改成像fn manage_request(&self)
一样引用self,我相信它是有效的。
更新后的游乐场链接运行无编译错误: