nova 0.5.4

Macro to derive newtypes with support for serde and sqlx.
Documentation
use nova::newtype;
use std::{borrow::Cow, ops::Deref};

#[test]
fn ahhh() {
    #[newtype(copy)]
    pub type Hello = u8;

    let wow = Hello(32);
    assert_eq!(wow.into_inner(), 32);
}

#[test]
fn ahhh2() {
    #[newtype(borrow = "str")]
    pub type Hello = String;

    let wow = Hello("wew lad".into());
    assert_eq!(wow.deref(), "wew lad");
    assert_eq!(wow.into_inner(), "wew lad");
}

#[test]
fn ahhh3() {
    #[newtype(new, borrow = "str", display)]
    pub type Hello<'a> = Cow<'a, str>;

    let wow = Hello("wew lad".into());
    assert_eq!(wow.deref(), "wew lad");
    assert_eq!(wow.into_inner(), "wew lad");
}

#[test]
fn ahhh4() {
    struct DeriveNothing {}

    #[newtype(derive())]
    type Hello = DeriveNothing;

    assert!(true); // if it builds it works
}

#[test]
fn ahhh5() {
    #[derive(Debug, Copy, Clone)]
    struct DebugCopyClone(u32);

    #[newtype(derive(Debug, Copy, Clone))]
    type Hello = DebugCopyClone;

    assert_eq!("DebugCopyClone(42)", &format!("{:?}", DebugCopyClone(42)));

    let hello = Hello(DebugCopyClone(42));
    assert_eq!("Hello(DebugCopyClone(42))", &format!("{:?}", hello));

    let goodbye = hello;
    assert_eq!("Hello(DebugCopyClone(42))", &format!("{:?}", hello));
    assert_eq!("Hello(DebugCopyClone(42))", &format!("{:?}", goodbye));
}