gpt4 book ai didi

rust - 使用 `unreachable!` 与 `panic!` 相比有什么性能优势吗?

转载 作者:行者123 更新时间:2023-11-29 07:43:37 25 4
gpt4 key购买 nike

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

最佳答案

unreachable! macro (和 unimplemented! 也是)纯粹是为了清楚起见。他们是implemented直接转发到 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"))
}

不要与 unreachable intrinsic 混淆(可通过 unreachabledebug_unreachable crate 在稳定的 Rust 中访问),它不安全地断言一个分支是完全不可访问的。这允许在优化时完全删除分支。如果断言被证明是错误的,它可能会导致未定义的行为,而 unreachable!() 只会引起 panic 。

关于rust - 使用 `unreachable!` 与 `panic!` 相比有什么性能优势吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44254995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com