Expand description
§padded-number
- For numbers containing significant leading zeros
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"));
§Length bounds
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());
§Ordering
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);
§Addition and subtraction with u64 as right-hand-side
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")
);
§Feature flags
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.unstable-nightly
- Enables methods onPaddedNumber
which in turn rely on the unstablegeneric_const_exprs
feature.
Macros§
- bound_
padded_ number - Construct a bound
PaddedNumber
at compile time, similar topadded_number!
- padded_
number - Construct a
PaddedNumber
at compile time
Structs§
- Padded
Number - Newtype encapsulating the padded number invariants
Enums§
- Parse
Padded Number Error - Error originating from
PaddedNumber::try_new
Traits§
- Resize
Padded Number - Resize a
PaddedNumber
into a larger one or one of the same size.