diem_infallible/
nonzero.rs1#[macro_export]
11macro_rules! NonZeroUsize {
12 ($num:expr) => {
13 NonZeroUsize!($num, "Must be non-zero")
14 };
15 ($num:expr, $message:literal) => {
16 std::num::NonZeroUsize::new($num).expect($message)
17 };
18}
19
20#[cfg(test)]
21mod tests {
22
23 #[test]
24 fn test_nonzero() {
25 assert_eq!(1, NonZeroUsize!(1).get());
26 assert_eq!(std::usize::MAX, NonZeroUsize!(std::usize::MAX).get());
27 }
28
29 #[test]
30 #[should_panic(expected = "Must be non-zero")]
31 fn test_zero() {
32 NonZeroUsize!(0);
33 }
34
35 #[test]
36 #[should_panic(expected = "Custom message")]
37 fn test_zero_custom_message() {
38 NonZeroUsize!(0, "Custom message");
39 }
40}