practo 0.1.0

Basic math operations
Documentation
fn main() {
    let some_vec = vec![1, 2, 3, 9, 8, 4, 5, 6, 7];
    let mut iter = some_vec.iter();

    println!("{:?}", iter.next());
    println!("{}", iter.next().unwrap());
    println!("{}", iter.next().unwrap());
    println!("{}", iter.next().unwrap());
    println!("{}", iter.next().unwrap());
    println!("{}", iter.next().unwrap());
    println!("{}", iter.next().unwrap());
    println!("{:?}", iter.next());

    let some_vec = vec![1, 2, 3, 7, 8, 4, 5, 6, 7];

    let mut check = some_vec.iter().any(|&x| x > 2);

    println!("The value of the function is {:?}", check);

    let check: Option<&i32> = some_vec.iter().find(|&&x| x > 2);
    // ! when we note a reference in the output, in those cases we will be using double references
    // ! since the input to the function itself is also behind the reference.
    println!("The value of the function find is {}", check.unwrap());

    let check = some_vec.iter().position(|&x| x > 7);
    println!("The value of the function position is {}", check.unwrap());

    let check = some_vec.iter().rposition(|&x| x > 7);
    println!("The value of the function rposition is {}", check.unwrap());

    let check = some_vec.iter().max();
    println!("The value of the function max is {}", check.unwrap());

    let check = some_vec.iter().min();
    println!("The value of the function min is {}", check.unwrap());

    let mut iter = some_vec.iter().rev();
    println!("The value of the function rev is {:?}", iter.next());

    let filtered_values = some_vec.iter().filter(|&x| *x >= 4).collect::<Vec<&i32>>();
    println!("{:?}", filtered_values);

    let filtered_values = some_vec
        .into_iter()
        .filter(|&x| x >= 4)
        .collect::<Vec<i32>>();
    println!("{:?}", filtered_values);

    let some_vec = vec![1, 2, 3, 7, 8, 4, 5, 6, 7];

    let mapped_collection = some_vec.iter().map(|x| 2 * *x).collect::<Vec<i32>>();
    println!("{:?}", mapped_collection);

    let filtered_map = some_vec
        .iter()
        .map(|x| *x * 2)
        .filter(|x| *x > 10)
        .collect::<Vec<i32>>();
    println!("{:?}", filtered_map);
}