Crates.io | ordinal-trait |
lib.rs | ordinal-trait |
version | 0.1.0 |
source | src |
created_at | 2024-11-05 08:34:45.360613 |
updated_at | 2024-11-05 08:34:45.360613 |
description | Format numbers as ordinals efficiently. |
homepage | |
repository | https://github.com/heaths/ordinal-rs |
max_upload_size | |
id | 1436233 |
size | 143,384 |
Format numbers as ordinals efficiently. You can get the ordinal suffix e.g., "st", "nd", "rd", or "th" without allocations.
Format a number as an ordinal, allocating a new String
:
use ordinal_trait::Ordinal as _;
assert_eq!(12.to_ordinal(), "12th");
Get a number representing an ordinal you can use with comparisons and formatting.
use ordinal_trait::Ordinal as _;
let n = 12.to_number();
assert_eq!(*n, 12);
assert_eq!(format!("{n}"), "12th");
Compared to most other implementations that allocate a string just to check the last one or two characters, this implementation is much faster and does not allocate a string1.
To compare measurements across branches:
git checkout main
cargo bench -- --save-baseline main
git checkout feature
cargo bench -- --baseline main
Criterion does not have built-in memory profiling but when I find an impl of Measurement
to do so - or find time to write one - I'll include those stats as well; however, take into consideration that this implementation does not allocate a string at all for suffix()
. ↩