rust - 如果条件为假,我可以在 Rust 中使用什么运算符来返回特定错误?
问题描述
我有以下代码:
fn foo() -> Result<String, MyError> {
assert_eq!(vec.len(), 2);
unimplemented!()
}
pub enum MyError {
Error1,
Error2,
Error3,
}
Err(MyError::Error3)
如果vec.len() != 2
不是恐慌,我想返回。有没有办法写得更好(通过使用一些运算符)除了
if vec.len() != 2 { return Err(MyError::Error3); }
解决方案
让我们为此编写一个宏!
macro_rules! assert_throw {
($cond:expr, $err:expr) => {
if $cond {
Err($err)?;
}
};
}
你可以像这样使用它:
fn foo(v: &[u32]) -> Result<String, MyError> {
assert_throw!(v.len() != 3, MyError::Error1);
Ok("Ok".to_string())
}
(游乐场)
推荐阅读
- angular - 从辅助路由到根的 Angular 6 路由
- python - ValueError:无法分配对象用户必须是“用户”实例
- python - 使用 np.sum 在 python 中添加 Numpy 数组?
- wordpress - 有没有办法将多个块组合成一个块,以便可以将其保存为可重用?
- python - 如何制作一个首先嵌入用户输入中的动态浮点变量?
- python - 初学者 panda 根据代码更改行数据
- r - 如何通过矢量化重采样和重构n次?
- mysql - 无法从已部署的 Kubernetes NodeJS 应用程序连接到 Google MySQL
- ruby-on-rails - 登录facebook rails中的未初始化常量用户
- python-3.x - firebase_admin auth.verify_id_token 非常慢