# Expand your possibilities with the Try `?` Operator
[](https://crates.io/crates/try_more)
[](https://docs.rs/try_more)
Have you ever found yourself writing a function which may return early based on some condition?
```rust
fn my_function() {
// ...
if condition_a {
return;
}
// ...
if condition_b {
return;
}
// ...
}
```
It doesn't look Rusty, right? This crate offers an extension trait to be able to convert from
a `bool` to a `ControlFlow` and leverage the mighty power of `?` to get rid of those checks:
```rust
use core::ops::ControlFlow;
use try_more::BoolFlow;
fn my_function() -> ControlFlow<()> {
// ...
BoolFlow::r#break(condition_a)?;
// ...
condition_b.r#break()?;
// ...
}
```
There's also other methods besides `continue` and `break` which allows to control the value which is passed to the `Break` variant.