1 个稳定版本
1.0.0 | 2022 年 3 月 17 日 |
---|---|
0.1.0 |
|
#1689 在 Rust 模式
59 每月下载量
在 divisibility_check 中使用
8KB
89 行
Check
便捷的 assert!
-like 宏,立即返回 None
或 Err(...)
而不是崩溃。
在一个返回 Option<T>
的函数中,只需传递足够的参数来得到一个需要检查的条件。
check!(a < n);
check_eq!(a, b);
这将扩展为
if !(a < n) {
return None;
}
if a != b {
return None;
}
在一个返回 Result<T, E>
的函数中,调用宏时需要额外一个参数,这是检查失败时返回的错误(必须具有类型 E
),就像你可以添加参数来选择 panic 消息一样,使用 assert!
。
check!(a < n, MyError::TooBig);
check_eq!(a, b, MyError::NotEqual);
这将扩展为
if !(a < n) {
return Err(MyError::TooBig);
}
if a != b {
return Err(MyError::NotEqual);
}
lib.rs
:
便捷的 assert!
-like 宏,立即返回 None
或 Err(...)
而不是崩溃。
示例
在一个返回 Option<T>
的函数中,只需传递足够的参数来得到一个需要检查的条件。
check!(a < n);
check_eq!(a, b);
这将扩展为
if !(a < n) {
return None;
}
if a != b {
return None;
}
在一个返回 Result<T, E>
的函数中,调用宏时需要额外一个参数,这是检查失败时返回的错误(必须具有类型 E
),就像你可以添加参数来选择 panic 消息一样,使用 assert!
。
check!(a < n, MyError::TooBig);
check_eq!(a, b, MyError::NotEqual);
这将扩展为
if !(a < n) {
return Err(MyError::TooBig);
}
if a != b {
return Err(MyError::NotEqual);
}
注意
实际上,以下两行相当等效
check!(a <= b);
(a <= b).then(|| ())?;