我正在为一个嵌入式项目编写Rust,我的main
函数的签名是
#[entry]
fn main() -> !
我明白这意味着它永远不会返回,我通常会在main的末尾进入无限循环。
我想在我的main函数中使用?
try运算符,但我无法搜索rust ? in !
的文档。我怎么用文字拼出来?
我可以在?
函数中使用() -> !
吗?
我可以在
?
函数中使用() -> !
吗?
不.?
算子是X?
大致解释为:
match X {
Ok(success_value) => success_value,
Err(err_value) => {
return Err(err_value); // returns from the enclosing function
}
}
注意?
表达式如何暗示从使用它的函数返回。要使X?
编译,函数的返回类型必须是Result
,其错误变体与X
的错误变体兼容。返回never类型!
的函数特别承诺永远不会返回,因此它的返回类型与return
运算符隐含的?
不兼容。
永远不会返回的函数应该使用match
处理错误结果或等效选择适当的操作,或者调用.unwrap()
或.expect()
将它们转换为恐慌。