#derive #wrap #custom-derive #macro #derive-debug #display-from

macro no-std derive_wrapper

Rust custom derive macro for wrapping types

7 releases

Uses old Rust 2015

0.1.7 Sep 25, 2020
0.1.6 Apr 28, 2020
0.1.3 Dec 6, 2019

#8 in #custom-derive

Download history 6/week @ 2023-12-14 40/week @ 2023-12-21 13/week @ 2023-12-28 26/week @ 2024-01-04 17/week @ 2024-01-11 14/week @ 2024-01-18 3/week @ 2024-01-25 5/week @ 2024-02-01 10/week @ 2024-02-08 23/week @ 2024-02-15 36/week @ 2024-02-22 24/week @ 2024-02-29 33/week @ 2024-03-07 25/week @ 2024-03-14 21/week @ 2024-03-21 24/week @ 2024-03-28

105 downloads per month

MIT/Apache

23KB
547 lines

Derive-Wrapper

Build Status Latest version License

A custom derive macro helper that let's you easily derive traits for wrapper types.

Examples:

#[derive(Debug, Default, Index, AsRef, LowerHexIter)]
struct Array32([u8; 32]);

#[derive(Debug, Default, LowerHex)]
struct Flag(i32);

#[derive(Debug, Index, LowerHexIter)]
struct Hi {
    #[wrap]
    a: [u8; 32],
    b: Flag,
}

#[derive(Debug, Display, From, Error)]
#[display_from(Debug)]
struct Printer<T: std::fmt::Debug>(T);

#[derive(Default, LowerHex, Display)]
#[display_from(LowerHex)]
#[wrap = "two"]
struct Big {
    one: Array32,
    two: Hi,
}

#[derive(From)]
enum MyEnum<T> {
    #[derive_from]
    First(u8),
    #[derive_from]
    Second(Array32),
    Third,
    #[derive_from]
    Fourth {
        other: Vec<u8>,
    },
    #[derive_from]
    Fifth(PhantomData<T>),
    #[derive_from(f32, f64)]
    Floats,
    #[derive_from(std::io::Error, std::fmt::Error)]
    Errors,

}

Dependencies

~2MB
~45K SLoC