#unreachable #bug #less #panic #aranya #replace #unwrap

no-std aranya-buggy

A less panicky replacement for unreachable!() and unwrap

1 unstable release

0.1.0 Oct 16, 2024

#1082 in Rust patterns

Download history 147/week @ 2024-10-12 71/week @ 2024-10-19 45/week @ 2024-10-26 71/week @ 2024-11-02 39/week @ 2024-11-09

241 downloads per month
Used in 23 crates (11 directly)

AGPL-3.0-only

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