1 unstable release
0.1.0 | Oct 16, 2024 |
---|
#1105 in Rust patterns
350 downloads per month
Used in 23 crates
(11 directly)
8KB
135 lines
Error handling similar to core::unreachable
, but less panicky.
Configuration
Panicking is controlled by debug_assertions
.
- By default, in debug/test builds, we panic to make it easier to find bugs.
- In release builds, we don't want to panic so we instead return
Result<T,
[Bug
]>
.
Usage
use aranya_buggy::{bug, Bug, BugExt};
#[derive(Debug)]
enum MyError {
TooManyFrobs,
Bug(Bug),
}
impl From<Bug> for MyError {
fn from(err: Bug) -> Self {
Self::Bug(err)
}
}
fn main() -> Result<(), MyError> {
let x: u32 = 42;
let sum = x.checked_add(100).assume("x is small")?;
if x % 2 != 0 {
bug!("x is always even because I said so");
}
Ok(())
}
Dependencies
~4KB