3个版本
0.1.2 | 2024年7月11日 |
---|---|
0.1.1 | 2024年7月11日 |
0.1.0 | 2024年7月11日 |
在 Rust模式 中排名第732
每月下载量303
在 2 个crate中使用 (通过 rb64)
5KB
调试不可达
此crate定义了一个 unreachable! 宏,其编译条件取决于构建配置。如果构建为 debug,则转换为 core::unreachable;如果构建为 release,则转换为 core::hint::unreachable_unchecked。在某些情况下,unreachable_unchecked 的速度比 unreachable 快。此宏在发布模式下使用未检查版本,但在调试模式下仍然进行检查,允许您捕获不可达代码被访问的情况。
lib.rs
:
此crate定义了一个 [unreachable!] 宏,其编译条件取决于构建配置。
如果构建为 debug,则转换为 core::unreachable
如果构建为 release,则转换为 core::hint::unreachable_unchecked
在某些情况下,unreachable_unchecked 比 unreachable 更快。此宏在发布模式下使用未检查版本,但在调试模式下仍然进行检查,允许您捕获不可达代码被访问的情况。
示例
use dbg_unreachable::unreachable;
let a = Some(12_i32);
match a {
Some(n) if n >= 0 => {},
Some(n) if n < 0 => {},
Some(_) => unreachable!("The two arms above cover all possible cases"),
None => {},
}
上面的代码片段转换为以下两个片段。
调试
use dbg_unreachable::unreachable;
let a = Some(12_i32);
match a {
Some(n) if n >= 0 => {},
Some(n) if n < 0 => {},
Some(_) => core::unreachable!("The two arms above cover all possible cases"),
None => {},
}
发布
use dbg_unreachable::unreachable;
let a = Some(12_i32);
match a {
Some(n) if n >= 0 => {},
Some(n) if n < 0 => {},
Some(_) => unsafe { core::hint::unreachable_unchecked() },
None => {},
}