[−][src]Macro vulkayes_core::vk_enum_subset
Creates a subset of a vk enum, which is defined as an i32 struct with associated constants.
Usage:
vk_enum_subset! { /// Doc pub enum SubsetEnum { FOO, BAR, BAZ } impl Into<vk::MainEnum> }
expands to:
#[allow(non_camel_case_types)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[repr(i32)] /// Doc pub enum SubsetEnum { FOO = <vk::MainEnum>::FOO.as_raw(), BAR = <vk::MainEnum>::BAR.as_raw(), BAZ = <vk::MainEnum>::BAZ.as_raw() } impl Into<vk::MainEnum> for SubsetEnum { fn into(self) -> vk::MainEnum { <vk::MainEnum>::from_raw(self as i32) } } impl std::convert::TryFrom<vk::MainEnum> for SubsetEnum { type Error = String; fn try_from(value: vk::MainEnum) -> Result<Self, Self::Error> { match value { vk::MainEnum::FOO => Ok(SubsetEnum::FOO), vk::MainEnum::BAR => Ok(SubsetEnum::BAR), vk::MainEnum::BAZ => Ok(SubsetEnum::BAZ), _ => Err( format!( concat!("Cannot convert from ", stringify!(vk::MainEnum), "::{:?} to ", stringify!(SubsetEnum)), value ) ) } } }