Windows上で Rust 1.3 を使用
以前、「Windows 上で Rust を使用」 では Rust 0.9 を使いましたが、今回は Rust 1.3 で試してみました。
環境構築
https://www.rust-lang.org/ から Windows installer をダウンロード (例 https://static.rust-lang.org/dist/rust-1.3.0-x86_64-pc-windows-gnu.msi) し、インストールするだけとなっています。
gcc 等もインストーラーに含まれているので (例 bin\rustlib\x86_64-pc-windows-gnu\bin\gcc.exe
)、以前のように MinGW を別途インストールしたりする必要はありません。
ビルドと実行
それではサンプルソースをビルドして実行してみます。
以前の Rust 0.9 用ソースをそのままでは使えなかったので書き換えました。
sample.rs
use std::fmt; fn main() { let d1 = Data { name: "data", value: 10 }; let d2 = Data { name: "data", value: 10 }; let d3 = Data { name: "data", value: 0 }; let d4 = Data { name: "etc", value: 5 }; println!("d1 == d2 : {}", d1 == d2); println!("d1 == d2 : {}", d1.eq(&d2)); println!("d1 == d3 : {}", d1 == d3); println!("-----"); println!("{:?}", d1); println!("{}", d1); println!("-----"); println!("times = {}", d1.times(3)); println!("-----"); d1.print_value(); d3.print_value(); println!("-----"); let res = calc(&[d1, d2, d3, d4]); println!("calc = {}", res); } fn calc(list: &[Data]) -> i32 { list.iter().fold(1, |acc, v| acc * match v { // name = "data" で value の値が 0 より大きい場合 &Data {name: "data", value: b} if b > 0 => b, // それ以外 _ => 1 }) } // PartialEq と Debug トレイトを自動導出 #[derive(PartialEq, Debug)] struct Data { name: &'static str, value: i32 } // メソッドの定義 impl Data { fn print_value(&self) { match self.value { 0 => println!("value: zero"), a @ _ => println!("value: {}", a) } } } // トレイトの定義 trait Sample { fn get_value(&self) -> i32; fn times(&self, n: i32) -> i32 { self.get_value() * n } } // トレイトの実装 impl Sample for Data { fn get_value(&self) -> i32 { self.value } } // {} で出力するため Display トレイトを実装 impl fmt::Display for Data { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "display (Data name={}, value={})", self.name, self.value) } }
以前との主な変更点は以下の通りです ※。
- deriving を
derive
へ変更 - int を
i32
へ変更 - ~str を
&'static str
へ変更 - Eq を PartialEq へ変更 (
trait Eq: PartialEq<Self>
となっている) {}
で出力するため Display トレイトを実装{:?}
で出力するため Debug トレイトを自動導出
※ Rust 1.0 で色々と変更されたようです
ビルド
rustc コマンドを使ってビルドを実施します。※
ビルドに成功すると .exe ファイルが作成されます。
※ インストール時に "Add to PATH" を実施しなかった場合は 環境変数 PATH へ Rust の bin ディレクトリを追加しておく必要があります
ビルド例
> rustc sample.rs
実行
ビルドで生成された .exe ファイルは普通に実行できます。
実行例
> sample.exe d1 == d2 : true d1 == d2 : true d1 == d3 : false ----- Data { name: "data", value: 10 } display (Data name=data, value=10) ----- times = 30 ----- value: 10 value: zero ----- calc = 100
今回使用したサンプルソースは http://github.com/fits/try_samples/tree/master/blog/20150920/