読者です 読者をやめる 読者になる 読者になる

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());
    }
}