or-panic

Crates.ioor-panic
lib.rsor-panic
version1.0.2
created_at2025-11-18 06:23:49.63969+00
updated_at2025-11-20 03:26:09.80539+00
descriptionunwrap or panic
homepage
repositoryhttps://github.com/antonio-hickey/or-panic
max_upload_size
id1937947
size21,120
Antonio Hickey (antonio-hickey)

documentation

https://docs.rs/or-panic

README

or-panic 🫨🤯

dependency count size license build status

A tiny extension trait that adds idiomatic .or_panic(..) methods to Option and Result.

[dependencies]
or-panic = "1.0.0"

Example

use or_panic::ResultOrPanic;

fn main() {
    let duration = std::time::SystemTime::now()
        .duration_since(std::time::UNIX_EPOCH)
        .or_panic("oh no, the chrono demons have reversed the fabric of time");

    let secs = duration.as_secs();
    println!("Seconds since epoch: {secs}");
}

Features

  • Ergonomic unwrapping
  • Works with any Display
  • Pretty panic messages with Result
  • Context on the exact line of panic
  • Optional no_std support
    • enabled via:
      default-features = false
      features = ["no_std"]   
      

Quick Start

Add the crate to your Cargo.toml:

[dependencies]
or-panic = "1.0.0"

Import the traits:

use or_panic::prelude::*;

Use it:

let host = std::env::var("HOST")
    .or_panic("HOST environment variable must be set");

no_std support

or-panic supports no_std environments.

Enable no_std mode like so:

[dependencies]
or-panic = { version = "1.0.0", default-features = false, features = ["no_std"] }

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Commit count: 0

cargo fmt