何回目なのか分からない
使ったバージョン
rustc 0.13.0-dev (b497f0500 2014-12-16 01:32:33 +0000)
コード
fn main() { let n = 100u; let (tx, rx) = channel(); for i in range(0, n) { let tx = tx.clone(); spawn(move || { let i = i + 1; let b = match (i % 3, i % 5) { (0, 0) => "FizzBuzz".into_cow(), (0, _) => "Fizz".into_cow(), (_, 0) => "Buzz".into_cow(), _ => i.to_string().into_cow() }; tx.send((i, b)); }); } let mut res = Vec::new(); for _ in range(0, n) { res.push(rx.recv()); } res.sort_by(|t, u| (&t.0).cmp(&u.0)); for t in res.iter() { println!("{}", (&t.1).as_slice()); } }
前回からの変更点
channelの型を書かなくて良くなった。proc() {}はdeprecated。move || {}を使う。range(0, 100)だと型が決まらなくてダメ。100uと明示的に書く。- ついでに反復回数は変数
nに代入することにした。(本質的でない変更) MaybeOwnedはdeprecatedなのでcollections::str::CowStringを使う。Cowは牛じゃなくてcopy-on-writeclone-on-write。i.to_str()からi.to_string()に。t.ref0()じゃなくて&t.0と書くようになった。