geez 0.1.0

geez — Global Error Embedding Zero-cost. Declarative error enums, thiserror-like attrs, zero deps
Documentation
use geez::geez;

geez! {
    enum Multi {
        #[error("bad status {0}: {1}")]
        Status(u16, String),

        #[error("{0} / {1} / {2}")]
        Triple(u8, u8, u8),

        #[error("only {0}")]
        One(String),
    }
}

#[test]
fn two_fields() {
    let err = Multi::Status(404, "missing".into());
    assert_eq!(err.to_string(), "bad status 404: missing");
}

#[test]
fn three_fields() {
    let err = Multi::Triple(1, 2, 3);
    assert_eq!(err.to_string(), "1 / 2 / 3");
}

#[test]
fn single_with_format() {
    let err = Multi::One("x".into());
    assert_eq!(err.to_string(), "only x");
}

#[test]
fn docs_passthrough_compiles() {
    geez! {
        /// Docs on the enum.
        pub enum Documented {
            /// A unit variant.
            Empty,
            #[error("x={0}")]
            Value(i32),
        }
    }

    assert_eq!(Documented::Empty.to_string(), "Empty");
    assert_eq!(Documented::Value(3).to_string(), "x=3");
}