Crate iota [−] [src]
The iota!
macro constructs a set of related constants.
#[macro_use] extern crate iota; iota! { const A: u8 = 1 << iota; | B | C | D } fn main() { assert_eq!(A, 1); assert_eq!(B, 2); assert_eq!(C, 4); assert_eq!(D, 8); }
Within an iota!
block, the iota
variable is an untyped integer constant
whose value begins at 0 and increments by 1 for every constant declared in
the block.
#[macro_use] extern crate iota; iota! { const A: u8 = 1 << iota; | B const C: i32 = -1; // iota is not used but still incremented pub const D: u8 = iota * 2; | E | F } // `iota` begins again from 0 in this block iota! { const G: usize = 1 << (iota + 10); | H } fn main() { assert_eq!(A, 1 << 0); assert_eq!(B, 1 << 1); assert_eq!(C, -1); assert_eq!(D, 3 * 2); assert_eq!(E, 4 * 2); assert_eq!(F, 5 * 2); assert_eq!(G, 1 << (0 + 10)); assert_eq!(H, 1 << (1 + 10)); }
Macros
iota |
Please refer to the crate-level documentation. |