#try #operator #break #bool #control-flow #continue #possibilities

try_more

利用 Try ? 操作符扩展您的可能性

2 个版本

0.1.1 2022 年 2 月 1 日
0.1.0 2022 年 2 月 1 日

#12#continue

MIT/Apache

8KB
108

利用 Try ? 操作符扩展您的可能性

crate documentation

你是否曾经发现自己编写了一个基于某些条件的函数可能会提前返回?

fn my_function() {
    // ...

    if condition_a {
        return;
    }
    
    // ...

    if condition_b {
        return;        
    }
    
    // ...
}

这看起来并不 Rust,对吧?这个包提供了一个扩展特质,可以将 bool 转换为 ControlFlow,并利用强大的 ? 操作符来消除这些检查

use core::ops::ControlFlow;
use try_more::BoolFlow;

fn my_function() -> ControlFlow<()> {
    // ...

    BoolFlow::r#break(condition_a)?;

    // ...

    condition_b.r#break()?;
    
    // ...
  
}

除了 continuebreak 之外,还有其他方法可以控制传递给 Break 变体的值。

无运行时依赖