Used when "0" and "00" should be considered as distinct values. Encapsulated in
an efficient PaddedNumber
type with, length bounds, ordering, and arithmetic
features included.
use padded_number::padded_number;
// macro creates a valid `PaddedNumber` at compile time
assert_eq!(padded_number!("001"), padded_number!("001"));
assert_ne!(padded_number!("0"), padded_number!("00"));
use std::str::FromStr;
use padded_number::{PaddedNumber, bound_padded_number};
let from_macro = bound_padded_number!(2, 3, "123");
let from_str = PaddedNumber::<2, 3>::from_str("123").unwrap();
assert_eq!(from_macro, from_str);
// try_new is const fn compared to `FromStr`
assert!(PaddedNumber::<2, 3>::try_new("0").is_err());
assert!(PaddedNumber::<2, 3>::try_new("0000").is_err());
use padded_number::padded_number;
let a = padded_number!("0");
let b = padded_number!("00");
assert!(a < b);
let u = padded_number!("10");
let v = padded_number!("001");
assert!(u < v);
Zeros being their own step is required to make padded number arithmetic consistent.
use padded_number::padded_number;
assert_eq!(
padded_number!("9") + 1,
padded_number!("00")
);
assert_eq!(
padded_number!("000") - 1,
padded_number!("99")
);
All are disabled by default.
macros
- Enables thepadded_number!
andbound_padded_number!
macros.serde
- Enables serde support forPaddedNumber
. Serialization is done to and from a plain string.phf
- Implementsphf::PhfHash
forPaddedNumber
.unstable-nightly
- Enables methods onPaddedNumber
which in turn rely on the unstablegeneric_const_exprs
feature.