Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

Rust library for numbers containing significant leading zeros

License

Notifications You must be signed in to change notification settings

gibbz00/padded-number

padded-number - For numbers containing significant leading zeros

ci_status codecov license crates_io docs_rs

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 the padded_number! and bound_padded_number! macros.
  • serde - Enables serde support for PaddedNumber. Serialization is done to and from a plain string.
  • unstable-nightly - Enables methods on PaddedNumber which in turn rely on the unstable generic_const_exprs feature.

About

Rust library for numbers containing significant leading zeros

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages