Julio Biason
2 years ago
1 changed files with 35 additions and 0 deletions
@ -0,0 +1,35 @@
|
||||
//! Testing ControlFlow
|
||||
|
||||
use std::ops::ControlFlow; |
||||
|
||||
#[derive(Debug)] |
||||
enum ValueError { |
||||
Odd, |
||||
Zero, |
||||
} |
||||
|
||||
fn main() { |
||||
let invalid = [1, 3, 4, 0, 2, 4, 1]; |
||||
let all_valid = [2, 2, 2, 2, 4]; |
||||
|
||||
let res_invalid = process(&invalid); |
||||
println!("Invalid: {:?}", res_invalid); |
||||
} |
||||
|
||||
fn process(values: &[u8]) -> Result<Vec<u8>, ValueError> { |
||||
let result = values |
||||
.iter() |
||||
.map(|x| { |
||||
if *x == 0 { |
||||
ControlFlow::Break(Err(ValueError::Zero)) |
||||
// or `return Err(ValueError::Zero)`
|
||||
} else if *x % 2 != 0 { |
||||
ControlFlow::Break(Err(ValueError::Odd)) |
||||
// or `return Err(ValueError::Odd)`
|
||||
} else { |
||||
ControlFlow::Continue(*x * 2) |
||||
} |
||||
}) |
||||
.collect::<Vec<u8>>(); |
||||
Ok(result) |
||||
} |
Loading…
Reference in new issue