pub enum EnumToTraitStrategy {
Dynamic,
Static,
Generic,
MarkerOnly,
}Expand description
Strategy for enum-to-trait conversion
Determines how the converted type should be used:
Dynamic:Box<dyn Trait>- heap allocation, runtime polymorphismStatic:impl Traitor generics withT: Trait- monomorphization, no heapMarkerOnly: Only creates trait + structs, no type replacement
Variants§
Dynamic
Use Box<dyn Trait> for dynamic dispatch (default)
Parameters: fn process(filter: Status) → fn process(filter: Box<dyn Status>)
Return types: fn create() -> Status → fn create() -> Box<dyn Status>
Fields: filter: Status → filter: Box<dyn Status>
Static
Use impl Trait for static dispatch (functions only)
Parameters: fn process(filter: Status) → fn process(filter: impl Status)
Return types: fn create() -> Status → fn create() -> impl Status
Fields: Falls back to Box<dyn Trait> (impl Trait not allowed in fields)
Generic
Use generics <T: Trait> for full static dispatch
Structs become generic: struct Config { filter: Status } → struct Config<T: Status> { filter: T }
Functions become generic: fn process(filter: Status) → fn process<T: Status>(filter: T)
Preserves monomorphization for all cases including struct fields
MarkerOnly
Only create trait and struct definitions, no type replacement
Useful when manual control over type replacement is needed
Trait Implementations§
Source§impl Clone for EnumToTraitStrategy
impl Clone for EnumToTraitStrategy
Source§fn clone(&self) -> EnumToTraitStrategy
fn clone(&self) -> EnumToTraitStrategy
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for EnumToTraitStrategy
impl Debug for EnumToTraitStrategy
Source§impl Default for EnumToTraitStrategy
impl Default for EnumToTraitStrategy
Source§fn default() -> EnumToTraitStrategy
fn default() -> EnumToTraitStrategy
Source§impl<'de> Deserialize<'de> for EnumToTraitStrategy
impl<'de> Deserialize<'de> for EnumToTraitStrategy
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for EnumToTraitStrategy
impl PartialEq for EnumToTraitStrategy
Source§fn eq(&self, other: &EnumToTraitStrategy) -> bool
fn eq(&self, other: &EnumToTraitStrategy) -> bool
self and other values to be equal, and is used by ==.