cp_library_rs/utils/
consts.rs

1//! 定数
2
3/// usizeにおける`-1`の値
4pub const NEG1: usize = 1_usize.wrapping_neg();
5
6/// 競プロ用の最大値
7pub trait Infinity {
8    fn infinity() -> Self;
9}
10
11macro_rules! impl_infinity {
12    ($t:ty, $v:expr) => {
13        impl Infinity for $t {
14            fn infinity() -> $t {
15                $v
16            }
17        }
18    };
19}
20
21impl_infinity!(usize, 1001001001001001001);
22impl_infinity!(isize, 1001001001001001001);
23impl_infinity!(u64, 1001001001001001001);
24impl_infinity!(i64, 1001001001001001001);
25impl_infinity!(u32, 1001001001);
26impl_infinity!(i32, 1001001001);
27impl_infinity!(f64, 1e20);