blob: db0f968f0a1e93d3c55e337eee8835de16415aaf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#![deny(missing_docs, warnings)]
#![no_std]
//! `panic!()` in debug builds, optimization hint in release.
#[doc(hidden)] pub mod _internal { pub use core::hint::unreachable_unchecked; }
#[macro_export]
/// `panic!()` in debug builds, optimization hint in release.
///
/// Example:
///
/// ```
/// use debug_unreachable::debug_unreachable;
///
/// fn main() {
/// if 0 > 100 {
/// // Can't happen!
/// unsafe { debug_unreachable!() }
/// } else {
/// println!("Good, 0 <= 100.");
/// }
/// }
/// ```
macro_rules! debug_unreachable {
() => { debug_unreachable!("entered unreachable code") };
($e:expr) => {
if cfg!(debug_assertions) {
panic!($e)
} else {
$crate::_internal::unreachable_unchecked()
}
}
}
|