A fantastic, #![no_std]
-friendly crate for fmting numbers using the appropriate unicode characters via the Display
trait. ✨
Format as vulgar fractions, super- and subscript and more.
Contributions are welcome for more formats.
Creates beautiful unicode fractions like ¼ or ¹⁰⁄₃.
use fmtastic::VulgarFraction;
assert_eq!("¹⁰⁄₃", format!("{}", VulgarFraction::new(10, 3)));
assert_eq!("¼", format!("{}", VulgarFraction::new(1, 4)));
Formats integers as sub- or superscript.
use fmtastic::{Subscript, Superscript};
assert_eq!("x₁", format!("x{}", Subscript(1)));
assert_eq!("n²", format!("n{}", Superscript(2)));
Formats unsigned integers as Roman numerals.
use fmtastic::Roman;
assert_eq!("ⅾⅽⅽⅼⅹⅹⅹⅰⅹ", format!("{:#}", Roman::new(789_u16).unwrap())); // lowercase
assert_eq!("ⅯⅯⅩⅩⅠⅤ", format!("{}", Roman::new(2024_u16).unwrap()));
assert_eq!("MMXXIV", format!("{}", Roman::new(2024_u16).unwrap().ascii())); // ascii
assert_eq!("ⅠⅠⅠ", format!("{}", Roman::from(3_u8))); // u8's can always be formatted as Roman numeral
Formats an unsigned integer using seven-segment digits from the Legacy Computing block.
use fmtastic::Segmented;
assert_eq!("🯶🯲🯸", format!("{}", Segmented(628_u32)));
Formats an unsigned integer using outlined digits from the Legacy Computing Supplement block.
use fmtastic::Outlined;
assert_eq!("", format!("{}", Outlined(628_u32)));
Formats an unsigned integer as tally marks.
use fmtastic::TallyMarks;
assert_eq!("𝍷𝍷𝍷", TallyMarks(3_u32).to_string());
assert_eq!("𝍸𝍸𝍷𝍷", TallyMarks(12_u32).to_string());
Formats a boolean as a ballot box.
use fmtastic::BallotBox;
assert_eq!("☑ Buy bread", format!("{} Buy bread", BallotBox(true)));
assert_eq!("☐ Do the dishes", format!("{} Do the dishes", BallotBox(false)));
assert_eq!("☒ Laundry", format!("{:#} Laundry", BallotBox(true)));
Licensed under either of
- Unlicense (unlicense.txt or https://unlicense.org/)
- Apache License, Version 2.0 (license-apache.txt or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (license-mit.txt or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be multi-licensed as above, without any additional terms or conditions.