Crate roman_literals

Crate roman_literals 

Source
Expand description

§roman-literals

roman-literals provides an easy way to write integer literals using Roman numerals.

§Features

  • Supports all integers from I to MMMCMXCIX (1 to 3999)
  • Type inference with the roman! macro
  • Zero cost!

§Usage

  • Type aliases like iXXXII are provided to replace primitive types like i32.

  • Using the roman! macro, the type of the literal is automatically inferred, with iXXXII being the default. The macro also supports negative numbers; see roman! for more details.

  • Constants are also provided, such as III_uXXXII. These constants are all suffixed with their type. See the consts module for more details.

§Examples

use roman_literals::*; // roman! macro and type aliases

let forty_two: uXXXII = roman!(XLII);
assert_eq!(forty_two, 42);

let negative_3999: iXVI = roman!(-MMMCMXCIX);
assert_eq!(negative_3999, -3999);

use roman_literals::consts::*; // to get the constants

let negative_300 = -CCC_iLXIV; // i64
assert_eq!(negative_300, -300);

§Why?

Why not?

Modules§

consts
Roman literals with explicit types.

Macros§

roman
Write a constant Roman numeral.

Type Aliases§

iCXXVIII
The CXXVIII-bit signed integer type.
iLXIV
The LXIV-bit signed integer type.
iVIII
The VIII-bit signed integer type.
iXVI
The XVI-bit signed integer type.
iXXXII
The XXXII-bit signed integer type.
uCXXVIII
The CXXVIII-bit unsigned integer type.
uLXIV
The LXIV-bit unsigned integer type.
uVIII
The VIII-bit unsigned integer type.
uXVI
The XVI-bit unsigned integer type.
uXXXII
The XXXII-bit unsigned integer type.