dec1728

Macro dec1728 

Source
macro_rules! dec1728 {
    ($($body:tt)*) => { ... };
}
Expand description

A macro to construct 1728-bit signed D1728 decimal from literals in compile time.

Const-evaluated in compile time macro-helper can be used for definitions of constants or variables whose value is known in compile time.

§Examples:

Basic usage:

use fastnum::*;

const N: D1728 = dec1728!(1.23456789);
assert!(!N.is_zero());

let num = dec1728!(0);
assert!(num.is_zero());

const A: D1728 = dec1728!(5);
const B: D1728 = dec1728!(1_000);
const C: D1728 = A.div(B);

assert_eq!(C, dec1728!(0.005));

§Static assertions:

// The below example will fail to compile, as the function will panic at compile time:
use fastnum::{dec1728, D1728};

// Gives a compile error of "error[E0080]: evaluation of constant value failed...
// the evaluated program panicked at 'attempt to parse decimal from string containing invalid digit'",
const N: D1728 = dec1728!(A1.23456789);

This allows you to perform all the necessary checks such as potentialy overflow or calculation accuracy loss and others at the compile time. Protect from unexpected errors in runtime.