ken*_*ytm 14
是的,unreachable!宏(unimplemented!也是)纯粹是为了清晰.它们被实现为直接转发到panic!.
#[macro_export]
#[stable(feature = "rust1", since = "1.0.0")]
macro_rules! unreachable {
() => ({
panic!("internal error: entered unreachable code")
});
($msg:expr) => ({
unreachable!("{}", $msg)
});
($fmt:expr, $($arg:tt)*) => ({
panic!(concat!("internal error: entered unreachable code: ", $fmt), $($arg)*)
});
}
#[macro_export]
#[stable(feature = "rust1", since = "1.0.0")]
macro_rules! unimplemented {
() => (panic!("not yet implemented"))
}
Run Code Online (Sandbox Code Playgroud)
不要与unreachable 内在(通过unreachable或debug_unreachable板条箱在稳定的Rust中访问)混淆,不安全地断言分支是完全无法访问的.这允许在优化时完全移除分支.如果断言结果是错误的话,它可能会导致未定义的行为,相比之下unreachable!()只会出现恐慌.
| 归档时间: |
|
| 查看次数: |
817 次 |
| 最近记录: |