traitlit 0.2.2

This crate exposes an atribute for implementing traits for integer and float types.
Documentation
use traitlit::lit;

trait Test {
    fn test() -> Self;
}

#[lit(V = u_)]
impl Test for V {
    fn test() -> V {
        1
    }
}

#[lit(V = NonZeroU_)]
impl Test for V {
    fn test() -> V {
        unsafe { <V>::new_unchecked(1) }
    }
}

#[lit(V = i_)]
impl Test for V {
    fn test() -> V {
        0
    }
}

#[lit(V = u_)]
trait Zero {
    fn zero() -> Self {
        0
    }
}

#[lit(V = [u128])]
trait Foo<T = V> {
    fn foo() -> Self {
        1
    }
}

fn main() {
    assert_eq!(u32::test(), 1);
    assert_eq!(i8::test(), 0);
    assert_eq!(usize::zero(), 0);
    assert_eq!(<u128 as Foo<u128>>::foo(), 1);
}