newtype-tools 0.1.0-beta.9

A lightweight library designed to make the newtype idiom more ergonomic to use.
Documentation
#![cfg(feature = "derive")]

#[test]
fn partial_eq() {
    #[derive(Debug, newtype_tools::Newtype)]
    /// Doc comment.
    #[newtype(partial_eq(Oranges, with = "|apples, oranges| apples.0 == oranges.0 as u64 * 2"))]
    struct Apples(u64);
    #[derive(Debug)]
    struct Oranges(u32);

    let apples = Apples(42);
    let oranges = Oranges(21);
    assert_eq!(apples, oranges);
}

#[test]
fn generic_partial_eq() {
    #[derive(Debug, newtype_tools::Newtype)]
    #[newtype(partial_eq(Oranges, with = "|apples, oranges| apples.0 == oranges.0 as u64 * 2"))]
    struct Apples<T>(T)
    where
        T: PartialEq<u64>;
    #[derive(Debug)]
    struct Oranges(u32);

    let apples = Apples(42);
    let oranges = Oranges(21);
    assert_eq!(apples, oranges);
}