1 个稳定版本

1.0.0 2022 年 3 月 17 日
0.1.0 2017 年 5 月 7 日

#1689Rust 模式

Download history • Rust 包仓库 2/week @ 2024-02-28 • Rust 包仓库 13/week @ 2024-03-27 • Rust 包仓库 20/week @ 2024-04-03 • Rust 包仓库 10/week @ 2024-04-10 • Rust 包仓库 4/week @ 2024-04-24 • Rust 包仓库 24/week @ 2024-05-01 • Rust 包仓库

59 每月下载量
divisibility_check 中使用

MIT/Apache

8KB
89

Check

便捷的 assert!-like 宏,立即返回 NoneErr(...) 而不是崩溃。

在一个返回 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 宏,立即返回 NoneErr(...) 而不是崩溃。

示例

在一个返回 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(|| ())?;

无运行时依赖