Crates.io | padded-number |
lib.rs | padded-number |
version | |
source | src |
created_at | 2025-03-09 10:28:47.988445+00 |
updated_at | 2025-03-15 13:07:30.660601+00 |
description | Work with numbers containing significant leading zeros |
homepage | |
repository | https://github.com/gibbz00/padded-number |
max_upload_size | |
id | 1585337 |
Cargo.toml error: | TOML parse error at line 19, column 1 | 19 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
padded-number
- For numbers containing significant leading zerosUsed 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 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.