[][src]Crate fnum

Fnum is an utility trait for enum, that provides Fnum::size_of_variant method. Fnum::size_of_variant returns the minimum size that specified variant requiring.

use fnum::Fnum;

#[derive(Fnum)]
enum MyEnum {
    A(u64),
    B(String),
    C(u64, u32, u32, u32),
    D {
        foo: u32,
        bar: String,
    }
}

assert_eq!(MyEnum::size_of_variant(0), 16); // bytes required by `MyEnum::A(..)`
assert_eq!(MyEnum::size_of_variant(1), 32); // bytes required by `MyEnum::B(..)`
assert_eq!(MyEnum::size_of_variant(2), 24); // bytes required by `MyEnum::C(..)`
assert_eq!(MyEnum::size_of_variant(3), 32); // bytes required by `MyEnum::D{..}`

Structs

__Lazy

A value which is initialized on the first access.

Traits

Fnum

Fnum trait providing Fnum::size_of_variant method.

Derive Macros

Fnum