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/