macro_rules! ibig {
(- $val:ident) => { ... };
(- $val:ident base $radix:literal) => { ... };
(- $val:literal) => { ... };
(- $val:literal base $radix:literal) => { ... };
($val:ident) => { ... };
($val:ident base $radix:literal) => { ... };
($val:literal) => { ... };
($val:literal base $radix:literal) => { ... };
}
Expand description
Create an IBig value.
Usually just pass use a numeric literal. This works for bases 2, 8, 10 or 16 using standard prefixes:
let a = ibig!(100);
let b = ibig!(-0b101);
let c = ibig!(0o202);
let d = ibig!(-0x2ff);
For an arbitrary base, add base N
:
let e = ibig!(-a3gp1 base 32);
If the sequence of digits is not a valid Rust literal or identifier, put an underscore before the digits. This may be necessary when:
- There are a lot of digits. Rust will fail to compile without an underscore if the number
wouldn’t fit in
u128
. - The first digit is decimal, but not all digits are decimal.
let f = ibig!(-_314159265358979323846264338327950288419716939937);
let g = ibig!(_0b102 base 32);
let h = ibig!(b102 base 32);
assert_eq!(g, h);
let i = ibig!(-_100ef base 32);