Macro std::unreachable 1.0.0[−][src]
macro_rules! unreachable { () => { ... }; ($msg:expr $(,)?) => { ... }; ($fmt:expr, $($arg:tt)*) => { ... }; }
Expand description
表示无法访问的代码。
每当编译器无法确定某些代码不可访问时,此功能就很有用。例如:
- 让分支与守卫条件匹配。
- 动态终止的循环。
- 动态终止的迭代器。
如果确定代码不可访问不正确,则程序立即以 panic!
终止。
unreachable_unchecked
函数是该宏中不安全的副本,如果到达代码,它将导致未定义的行为。
Panics
这将始终为 panic!
。
Examples
match 分支:
fn foo(x: Option<i32>) { match x { Some(n) if n >= 0 => println!("Some(Non-negative)"), Some(n) if n < 0 => println!("Some(Negative)"), Some(_) => unreachable!(), // 如果注释掉,就会编译错误 None => println!("None") } }Run
Iterators:
fn divide_by_three(x: u32) -> u32 { // x/3 最差的实现之一 for i in 0.. { if 3*i < i { panic!("u32 overflow"); } if x < 3*i { return i-1; } } unreachable!(); }Run