Rust 使用'unreachable!'有什么性能优势吗vs‘恐慌!’?

Rust 使用'unreachable!'有什么性能优势吗vs‘恐慌!’?,rust,Rust,的存在是不可能的宏纯粹是为了阅读代码时的清晰,还是它提供了任何功能优势?是的(和也是)纯粹是为了清晰。他们将直接转发到panic #[macro_export] #[stable(feature = "rust1", since = "1.0.0")] macro_rules! unreachable { () => ({ panic!("internal error: entered unreachable code") }); ($msg:exp

的存在是不可能的宏纯粹是为了阅读代码时的清晰,还是它提供了任何功能优势?

是的(和也是)纯粹是为了清晰。他们将直接转发到
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"))
}
不要与(通过或板条箱在稳定的锈迹中可接近)混淆,后者不安全地断言分支完全不可接近。这允许在优化时完全删除分支。与
不可访问相比,如果断言被证明是错误的,则可能导致未定义的行为!()
这只会让人恐慌