プログラミング言語 Rust
プログラミング言語Rustの処理系バージョン0.1が出てきました。
404 Blog Not Found:rust - を早速試してみた
Big Sky :: 新言語rustでhello world
自分でもFizzBuzzを書いてみました。
// use宣言はリンクする外部crateの指定 use std; // import宣言は外部モジュールをローカルに束縛 import sort = std::sort::quick_sort; // インターフェース // モジュール、型、値で別の名前空間を持つ iface str { fn str() -> str; } // インプリメント impl of str for int { fn str() -> str { int::str(self) } } fn main() { // 並列処理 // メッセージ受信用ポート let p = comm::port(); // メッセージ送信用チャンネル let c = comm::chan(p); int::range(0, 100) {|i| task::spawn {|| let j = i + 1; // alt式でパターンマッチング let b = alt (j % 3, j % 5) { (0, 0) { "FizzBuzz" } (0, _) { "Fizz" } (_, 0) { "Buzz" } _ { j.str() } }; comm::send(c, (i, b)); }; } // quick_sort関数はmutableの配列を引数に取る // ベクトルリテラル側にも明示が必要 let res = [mutable]; // 不使用変数には警告が出る // アンダースコアで始まる変数なら出ない int::range(0, 100) {|_i| // ベクトルはユニーク(複数から参照されることがない) // だからベクトルの伸長は見た目ほど非効率ではない、らしい res += [mutable comm::recv(p)]; } sort({|t, u| tuple::first(t) <= tuple::first(u) }, res); vec::iter(res) {|t| std::io::println(tuple::second(t)); } }