#bug #unreachable #less #aranya #return #panicky #buggy

no-std aranya-buggy

A less panicky replacement for unreachable!() and unwrap

1 unstable release

new 0.1.0 Oct 16, 2024

#2 in #unreachable

Download history 180/week @ 2024-10-14

180 downloads per month
Used in 21 crates (9 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