#error #error-message #derive-error #proc-macro #thiserror #docs #generate

error-doc

A simple proc macro to generate #[doc] comments from #[error] messages

2 unstable releases

0.2.0 Aug 21, 2024
0.1.0 Aug 17, 2024

#1748 in Rust patterns

Download history 30/week @ 2024-09-11 22/week @ 2024-09-18 31/week @ 2024-09-25 25/week @ 2024-10-02 9/week @ 2024-10-09 11/week @ 2024-10-16 23/week @ 2024-10-23 22/week @ 2024-10-30 17/week @ 2024-11-06 32/week @ 2024-11-13 44/week @ 2024-11-20 33/week @ 2024-11-27 43/week @ 2024-12-04 91/week @ 2024-12-11 28/week @ 2024-12-18 12/week @ 2024-12-25

178 downloads per month

MIT/Apache

5KB

error-doc

A simple proc macro to generate #[doc] comments from #[error] messages

Usage

The errors macro derives thiserror::Error and core::fmt::Debug traits, and automatically generates missing documents for error variants from error messages.

Using error_doc macro, you can also derive Error and Debug trait separately.

Example

#[error_doc::errors]
pub enum SomeError {
    #[error("failed to open config file")]
    OpenFile(#[from] std::io::Error),
    #[error(transparent)]
    #[doc = "Database error"]
    Database(#[from] sqlx::Error),
    #[error("unexpected value: `{0}`")]
    #[doc = "Unexpected value is provided"]
    UnexpectedValue(u16),
    #[error("some other error")]
    Other,
}

and

#[error_doc::error_doc]
#[derive(thiserror::Error, Debug)]
pub enum SomeError {
    #[error("failed to open config file")]
    OpenFile(#[from] std::io::Error),
    #[error(transparent)]
    #[doc = "Database error"]
    Database(#[from] sqlx::Error),
    #[error("unexpected value: `{0}`")]
    #[doc = "Unexpected value is provided"]
    UnexpectedValue(u16),
    #[error("some other error")]
    Other,
}

generates

#[derive(thiserror::Error, Debug)]
pub enum SomeError {
    #[error("failed to open config file")]
    #[doc = "Failed to open config file"]
    OpenFile(#[from] std::io::Error),
    #[error(transparent)]
    #[doc = "Database error"]
    Database(#[from] sqlx::Error),
    #[error("unexpected value: `{0}`")]
    #[doc = "Unexpected value is provided"]
    UnexpectedValue(u16),
    #[error("some other error")]
    #[doc = "Some other error"]
    Other,
}

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~240–690KB
~16K SLoC