#representation #sorting #fmt #display #compare #cmp #utilities

no-std fmt-cmp

Traits and utilities for lexicographically comparing values in their Display representations

3 releases

0.1.2 Jul 28, 2024
0.1.1 Jan 7, 2022
0.1.0 Dec 29, 2021

#348 in Rust patterns

Download history 213/week @ 2024-11-14 163/week @ 2024-11-21 103/week @ 2024-11-28 108/week @ 2024-12-05 100/week @ 2024-12-12 6/week @ 2024-12-19 7/week @ 2024-12-26 25/week @ 2025-01-02 116/week @ 2025-01-09 164/week @ 2025-01-16 90/week @ 2025-01-23 98/week @ 2025-01-30 121/week @ 2025-02-06 62/week @ 2025-02-13 129/week @ 2025-02-20 100/week @ 2025-02-27

416 downloads per month
Used in 4 crates (2 directly)

MIT/Apache

43KB
767 lines

fmt-cmp

GitHub Actions (CI) crates.io docs.rs Rust 1.41.0+

A Rust library for lexicographically comparing values in their Display representations.

The utilities provided by this library gives the same results as comparing values after applying to_string(), but they never allocate on the heap memory.

Examples

Compare digits of numbers:

assert!(fmt_cmp::eq(f64::NAN, f64::NAN)); // `"NaN" == "NaN"`
assert!(fmt_cmp::cmp(&42, &240).is_gt()); // `"42" > "240"`

Sorting integers lexicographically:

use std::collections::BTreeSet;

use fmt_cmp::Cmp as FmtCmp;

let mut values: BTreeSet<FmtCmp<u32>> = (1..=10).map(FmtCmp).collect();
assert!(values
   .into_iter()
   .map(|cmp| cmp.0)
   .eq([1, 10, 2, 3, 4, 5, 6, 7, 8, 9]));

License

Copyright (c) 2021 Daiki "tesaguri" Mizukami

This project is licensed under either of:

at your option.

No runtime deps