Rust async main返回Result仍触发?运算符E0277错误求助
错误根本原因
你代码最后一行的 Ok(()); 末尾多写了分号,导致main函数的实际返回值和你声明的返回类型不匹配。
Rust语法规则中:语句(末尾带分号的代码)默认返回单元类型(),只有不带分号的末尾表达式会作为函数的返回值。你声明main函数返回Result<(), Box<dyn std::error::Error>>,但因为最后一行加了分号,整个函数实际返回值是(),所以?运算符检测到所在异步块返回类型不符合要求,就抛出了对应报错。
修复方法
只需要删除最后一行Ok(());末尾的分号即可,修改后代码为:
Ok(())
修改后main函数的末尾表达式就是符合要求的Result类型,所有?运算符的使用场景都满足条件,报错会自动消除。
内容的提问来源于stack exchange,提问作者MB.
相关产品推荐
相关产品推荐

