parametrized 0.1.1

Supply useful iterating methods for user-defined types which are parametrized by type parameters
Documentation
use parametrized::*;

#[parametrized(default = [0, 1], into_iter = [0, 1], iter_mut = [0, 1], map = [0])]
struct MyStruct<K, V> {
    key: K,
    value: Vec<Option<V>>,
    metadata: Vec<String>,
}

fn main() {
    let mut my_struct = MyStruct {
        key: "example_key",
        value: vec![Some(1), None, Some(3), Some(4)],
        metadata: vec!["meta1".to_string(), "meta2".to_string()],
    };

    for val in my_struct.param_iter() {
        println!("Value: {:?}", val);
    }
    for val in my_struct.param_iter_mut() {
        let val: &mut usize = val;
        *val += 1;
    }
    for val in my_struct.param_iter() {
        println!("Updated Value: {:?}", val);
    }
    let sum: i32 = my_struct.param_into_iter().filter_map(|x| x).sum();
    println!("Sum: {}", sum);
    let new_struct = MyStruct {
        key: "new_key",
        value: vec![Some(10), Some(20), None],
        metadata: vec!["meta3".to_string(), "meta4".to_string()],
    }
    .map(|x| x.map(|v| v * 2)); // Option の中身を2倍にする

    for val in new_struct.iter() {
        println!("New Value: {:?}", val);
    }
}