derive_more
derive_more copied to clipboard
Change display on enum without `_variant` to "use as default" behaviour
trafficstars
This should work:
#[derive(Display)]
#[display("{_0}")]
enum Enum<T> {
#[display("A")]
A(i32),
#[display("B")]
B(&'static str),
#[display("C")]
C(T),
}
fn main() {
assert_eq!(Enum::<u8>::A(1).to_string(), "A");
assert_eq!(Enum::<u8>::B("abc").to_string(), "B");
assert_eq!(Enum::<u8>::C(9).to_string(), "C");
}
As well as:
#[derive(Display)]
#[display("some content: {_0}")]
enum Enum<T> {
#[display("A")]
A(i32),
B(&'static str),
C(T),
}
fn main() {
assert_eq!(Enum::<u8>::A(1).to_string(), "A");
assert_eq!(Enum::<u8>::B("abc").to_string(), "some content: abc");
assert_eq!(Enum::<u8>::C(9).to_string(), "some content: 9");
}
Related to #395. Note that transparence checks should also work as expected.