Skip to content
This repository has been archived by the owner on Dec 13, 2023. It is now read-only.

Document Error Handling Strategy #49

Open
elfenpiff opened this issue Nov 9, 2023 · 0 comments
Open

Document Error Handling Strategy #49

elfenpiff opened this issue Nov 9, 2023 · 0 comments
Labels
documentation Improvements or additions to documentation enhancement New feature or request

Comments

@elfenpiff
Copy link
Contributor

Brief feature description

The error handling strategy must be documented.

  • That we use enums as error codes
  • A strategy how internal error codes from a lower architectural level are translated into enum error codes of an higher architectural level
  • How std::error::Error and later (when it is in stable) core::error::Error is implemented for all error enums.

The issue shall be concluded with a markdown file explaining the above points and showing some code snippets to illustrate them.

Detailed information

From @elBoberido

I found another solution in the zstd crate. They use derive_more with a feature flag to derive Error only on std. This makes would allow no_std on stable but without the Error trait. Something to think of.

They basically did this

[dependencies]
derive_more = { version = "0.99", default-features = false, features = ["display", "from"] }

[features]
default = ["std"]
std = ["derive_more/error"]
#[derive(Debug, derive_more::Display, derive_more::From)]
#[cfg_attr(feature = "std", derive(derive_more::Error))]
#[non_exhaustive]
pub enum Foo {
    #[display(fmt = "Bar occurred. Is: {baz}, must be either 1 or 2")]
    Bar { baz: u8 },
    //...
}

The attributes on the enum tags are quite similar to thiserror so it wouldn't be too hard to switch between the two crates.

@elfenpiff elfenpiff added documentation Improvements or additions to documentation enhancement New feature or request labels Nov 9, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
documentation Improvements or additions to documentation enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant