📄 main.rs
/home/palash/git/misc/rust/ria/ch01/ch1-penguins/src/main.rs
Language: rs • Lines: 38
fn main() {
    let penguin_data = "\
    common name,length (cm)

    Little penguin,33

    Yellow-eyed penguin,65

    Fiordland penguin,60

    Invalid,data
    ";

    let records = penguin_data.lines();

    for (i, record) in records.enumerate() {
        if i == 0 || record.trim().len() == 0 {
            continue;
        }

        let fields: Vec<_> = record.split(',').map(|field| field.trim()).collect();

        if cfg!(debug_assertions) {
            eprintln!("debug: {:?} -> {:?}", record, fields);
        }

        let name = fields[0];

        match fields[1].parse::<f32>() {
            Ok(length) => println!("{}, {} cm", name, length),
            Err(_) => continue
        }

        if let Ok(length) = fields[1].parse::<u32>() {
            println!("{}, {} cm", name, length);
        }
    }
}