[][src]Crate take_if

Conditionally take a value out of an option.

This crate adds a take_if extension method to Option which conditionally takes the value out of an option, leaving None in its place if the value was taken. The predicate function is only called if the option is Some, and receives a reference to the option's contents.

If you don't need to take the value conditionally, i.e. you always need to take the value, use Option::take instead.


use take_if::TakeIf;

let mut maybe_greeting = Some("Hello, World!");

if let Some(greeting) = maybe_greeting.take_if(|greeting| greeting.starts_with("Hello")) {
    println!(r#"Greeting {:?} starts with "Hello""#, greeting);
} else {
    println!(r#"There was no greeting, or it didn't start with "Hello""#);



Extension trait for Option<T> that adds the take_if method.