Macro pavo_traits::impl_from_into_for_enum[][src]

macro_rules! impl_from_into_for_enum {
    ($Wrapper:ty, $Inner:ty) => { ... };
}
Expand description

实现包装枚举的 FromInto 特性。

Examples

use pavo_traits::{impl_from_into_for_enum};

mod ffi {
    // The enum in ffi with C style.
    #[repr(u32)]
    #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd)]
    pub enum MODE_E {
        MODE_E_A,
        MODE_E_B,
        MODE_E_C,
    }

    // The API of argumented with MODE_E.
    pub fn set_mode(mode: MODE_E) -> MODE_E {
        mode
    }
}

// The enum wrapped with Rust style.
#[repr(u32)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd)]
pub enum Mode {
    A,
    B,
    C,
}

// impl From<ffi::MODE_E>/Into<ffi::MODE_E> for Mode.
impl_from_into_for_enum!(Mode, ffi::MODE_E);

// Use from/into to convert the types.
assert_eq!(Mode::from(ffi::set_mode(Mode::A.into())), Mode::A);