RustでFizzBuzz
まだ前回から半月しか経っていないけど、task
がなくなったり、channel
が変わったりした。
rustc 0.13.0-dev (a6b109723 2015-01-03 01:10:40 +0000)
fn main() { use std::thread::Thread; use std::sync::mpsc::channel; use std::borrow::IntoCow; let n = 100u; let (tx, rx) = channel(); for i in range(0, n) { let tx = tx.clone(); Thread::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)).unwrap(); }).detach(); } let mut res = Vec::new(); for _ in range(0, n) { res.push(rx.recv().unwrap()); } res.sort_by(|t, u| (&t.0).cmp(&u.0)); for t in res.iter() { println!("{}", (&t.1).as_slice()); } }