macro_rules! impl_display_enum {
    ($ty:ty, $($variant:ident => $stringified:literal),+) => { ... };
    ($ty:ty, $($variant:ident => $stringified:literal),+ ,) => { ... };
    ($ty:ty, $($variant:ident ($($inner:ident),+) => $format:literal),+) => { ... };
    ($ty:ty, $($variant:ident ($($inner:ident),+) => $format:literal),+ ,) => { ... };
    ($ty:ty, $($variant:ident { $($inner:ident),+ } => $format:literal),+) => { ... };
    ($ty:ty, $($variant:ident { $($inner:ident),+ } => $format:literal),+ ,) => { ... };
}
Expand description

Implements Display for enums using a static string or format args for each variant.

Examples

use impl_more::impl_display_enum;

enum Foo {
    Bar,
    Qux,
}

impl_display_enum!(Foo, Bar => "bar", Qux => "qux");

assert_eq!(Foo::Bar.to_string(), "bar");
assert_eq!(Foo::Qux.to_string(), "qux");

enum CoordOrMsg {
    Coord(i64, i64),
    Msg(&'static str),
}

impl_display_enum!(CoordOrMsg, Coord(x, y) => "{x}, {y}", Msg(msg) => "message: {msg}");

assert_eq!(CoordOrMsg::Coord(4, 2).to_string(), "4, 2");
assert_eq!(CoordOrMsg::Msg("hi").to_string(), "message: hi");