#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

#949 in Rust patterns

Download history 180/week @ 2024-10-14 53/week @ 2024-10-21 32/week @ 2024-10-28 71/week @ 2024-11-04 37/week @ 2024-11-11 111/week @ 2024-11-18 137/week @ 2024-11-25 98/week @ 2024-12-02 267/week @ 2024-12-09 110/week @ 2024-12-16 16/week @ 2024-12-23 116/week @ 2024-12-30

509 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