问号运算符?和try!宏是否等效?

30
我正在寻找一种在Rust中连接使用try!宏的方法,并发现了这个实现?运算符的拉取请求。它似乎已经被合并,但我似乎还找不到任何关于它的文档。它是否等同于try!宏或者存在重要的区别?
1个回答

43

是的,?运算符等同于try!()。现在,?已经在稳定版Rust 1.13中发布了,发布日期为2016年11月10日

目前最好的文档来源似乎是RFC 0243。请注意,RFC中描述的catch在撰写本文时尚未实现(问题)。


我记得与宏相比,在错误转换方面存在一些限制;这个问题最终解决了吗? - Matthieu M.
3
根据RFC,它执行相同的错误转换:“与当前try!()宏类似,?操作符也将对异常类型执行隐式“上转”。”但是,既然只实现了RFC的一部分,有确定性文档记录语言中实际存在的内容会更好。 :-) - Chris Emerson
2
? 使用 carrier trait,因此其类型推断与使用 try!() 时略有不同;后者是特定于 Result 类型的。 - bluss
如果出现错误,? 运算符往往具有更好的错误消息。 - Kornel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接