よくいる文系プログラマの戯言

プライベートでの開発を適当に書き留めます

Mozillaが開発中のシステムプログラミング言語「Rust」に触ってみた①

備忘録がてら、本当に雑多に書いていきます。 基本的にはこいつに沿って進めます。 →The Rust Language Tutorial

コンパイルJavaより遅い

システム寄りの言語だから当たり前?Cを触ったことがないので、比較できません。。

変数宣言がSwiftっぽい

static MONSTER_FACTOR: f64 = 57.8;
let monster_size = MONSTER_FACTOR * 10.0;
let monster_size: int = 50;

ノーマルの変数の場合、型宣言はオプショナルだが、定数の場合は必須な模様。 ちなみに、letで宣言したローカル変数は基本的に中身を変えないのが前提っぽくて、変える場合はlet mutで宣言します。

let hi = "hi";
let mut  count = 0i;

while count < 10 {
  println!("count is {}", count);
  count += 1;
}

まだ書き方に謎が多いですが、構わず進みます。

変数名や関数名はスネークケース

ブロックの考え方 〜変数への代入がスマート〜

let price;
if item == "salad" {
  price = 3.50;
} else if item == "muffin" {
  price = 2.25;
} else {
  price = 2.00;
}

と書くところを、

let price = 
  if item == "salad" {
    3.50
  } else if item == "muffin" {
    2.25
  } else {
    2.00
  };

という表記が可能。 ブロックの中にセミコロンを書かないことで、連続した式になる模様。

In short, everything that's not a declaration (declarations are let for variables; fn for functions; and any top-level named items such as traits, enum types, and static items) is an expression, including function bodies.

これ結構重要です。 つまり、明示的に宣言しなかったものは、すべて式であり、その式は何かしらの値を返すということのようです。

fn is_four(x: int) -> bool {
  // 明示的なreturnは要らない
  x == 4
}

今日はこんなところで。 細々と続けていたらと思います。