euniclusRustという言語をご存知でしょうか。Mozillaプロジェクトが開発している言語です。c言語やc++波の性能があり、将来的にはc++の代わりになるプログラミング言語を目標としているそうです。有名な言語に比べて世界にはそこまで浸透はしていないかもしれませんが(違ってたらすみません)、気になったので記事にしたいと思いました。システムプログラミング言語であり、OSなどいろいろ作れるそうですよ。誰かがRedoxっていうOSを作ってました。前置きはほどほどにしてRustの文法などをここに残しておきたいと思います。World画面に文字列を出力するだけのサンプルです。World");}rustcコマンドでコンパイルします。hello配列を作成しループして偶数のみ表示するサンプルです。{}",a);}}}関数の定義は以下のようにします。i32という方の定義の仕方をしてますね。scalaやらswiftがこんな書き方をしていたようなちなみにi32は符号付きのint型です。{}",x)}標準入力から文字列を受け取りそれを出力するサンプルです。str);}Rustの難しいところ僕が難しいと思ったことは所有権という概念です。こんなソースコードがあるとします。{}",str1);}これをコンパイルすると怒られます。worldという文字列に対する参照(所有権)がstr1からstr2へと動いたから生じるようです。worldという文字列がヒープ領域に置かれ、そのアドレスをstr1が参照するようになります。str1;の一文で参照がstr1からstr2へと転送されます。str1からは文字列を参照することが出来なくなるみたいです。Rustは参照元が2つ以上あるということが気に食わないということですかね。ちなみにこんな感じだとコンパイルが通ります。str1.clone();の時にcloneして代入しています。worldという文字列がヒープに置かれ、そのアドレスをstr2が参照するようになります。参照の転送はおこりません。i32やu32などのプリミティブ型にはcopyトレイトというものが実装されているようで、上記のような問題は起こりません。参照ではなく値そのものがコピーされるからです。copyトレイトが実装されていない型だとこのような問題が起こるということですかね。最後に簡単に少しだけRustについてまとめました。所有権の部分に関しては自分も完全に理解できているかわからないので不備があったらご指摘いただきたいです。Rustって所有権の他にも他の言語にはないような新しい概念が結構あるのかなとやっていて思いました。世間的にも習得難易度が高いと認識されているようです。いずれにしろあと数年もすればさらにもっと世間に浸透すると思うので、その時にまた勉強しようかなと思います。何かを作りながら覚えていったほうがいいと思いますわ。