1 unstable release
new 0.1.0 | Jan 24, 2025 |
---|
#3 in #unreachable
586 downloads per month
Used in 2 crates
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 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