雑記帳

ちょっとした文章とかメモ書きとか。

Rust Langを使ってみる

Rust?

mozillaがRustというプログラミング言語をリリースしました。
http://www.rust-lang.org/

型に厳密で型安全性を高めた言語です。
チュートリアルを読む限りではかなりいいとこ取りで、
しかもHaskellほど抽象的な感じでない印象を受けました。

しかしこのRustはちょっと癖が強く、書きごたえとしてはRubyとHaskellとC++のSTLをつかったモノを混ぜて割った感じというなんとも形容しがたい感じでした。

実際書いてみるとかなりコンパイルエラーに遭遇しますよ(

実際に書いてみた

では実際に書いてみます。関数とすこしの標準メソッドを用いる感じにしてみました。
C++のSTL風の書き方になっているのは気にしないでください

vecpush.rs

use std;

fn vec_push(&v: [int], elt: int){
  v += [elt];
}

fn main() {
  let v: [int] = [];
  let vec_size: uint = 0u;
  vec_push(v,5);
  vec_push(v,2);
  vec_push(v,3);
  vec_push(v,10);
  vec_push(v,-3);
  vec_size = vec::len(v);
  uint::range(0u,vec_size) {|i|
    std::io::println(#fmt("%d",v[i]));
  }
}

実行結果:

./vecpush
5
2
3
10
-3

Rustも当然のことながら配列(Rustではvector?)の範囲外アクセスはデフォルトではチェックされないのでこのように少しコンピュータに仕事させないとソフトの安全性は高まらないと思います。

あと、println関数の引数が1つしか取れないというのは初め戸惑いました。
#fmtマクロを使えばどうってことはないのですが。
そしてこのマクロの中でも厳密に型チェックがされます。
Cのようにいい加減にフォーマットを書くとコンパイルエラーになります…

最後に

C++とかRubyのクラスに当たる事をしたい場合はモジュールという機構があるのでそれで扱えばいいのでしょうか…?

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。