CSVを操作するプログラムを改造してみます。 細かい操作はよくわからないので、数値を2倍にして出力してみます。
fn main() { let penguin_data = "\ common name, length (cm) Little Penguin, 36 Yellow-eyed Penguin, 65 Fiordland Penguin, 76 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]; if let Ok(length) = fields[1].parse::<f32>() { println!("{}, {} cm", name, length * 2); } } }
cargo run
するとエラーがおきます。
なるほど・・・なかなか厳しいですね。 integerからfloatなら自動変換できそうなものですが、エラーになります。
2
を2.0
にするかf32
をi32
にすればコンパイルが通ります。