kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

Rustのおべんきょう(4) - Hello, List! そのに -

Vec<T>型を引数で受け渡して、それをList<T>型に変換することで、とりあえずリストの生成を簡単にすることができた。しかし、ここでT : Copy にしちゃったからList<List<>>型はnew_list関数では作れない気がしてきた。

gist.github.com

Rustのおべんきょう(3) - Hello, List! -

とりあえず関数型プログラミングには必須だろうということで、Listを定義してみた。コンスセルのtail部分にいちいちBox::newつけなきゃならない(理由はわからなくもない)のがめんどいけどどうにかならないものか…。

gist.github.com

Rustのおべんきょう(2) - Hello, Macro! -

Hello, World!やったので次はHello, Macro!ですね。というわけで、サンプルコードを真似して書いてみました。

macro_rules! hello {
  () => (
    println!("Hello, Rust Programming Language");
  )
}

fn main() {
  hello!();
}

() が空引数にマッチするパターンを表しているわけですね。わかります。コンパイル方法と出力結果は同じなので省略します。

Rustのおべんきょう(1) - Hello, World! -

Rustには高機能なマクロがあると知って、ちょっと勉強を始めてみることにしました。飽きたらそこで止めるかもしれませんがご了承ください。

まずは定番のHello, World!書いてみましょう。

fn main() {
    println!("Hello, {rust}", rust = "Rust Programming Language");
}

println関数(呼び出し方が特殊なのでマクロなのかも)に"Hello, {rust}"という文字列(変数を含む)を渡して、rust =で{rust}の部分を埋めています。

コンパイル

>rustc hello.rs

で、hello.exeが生成されるので、それをそのまま実行。

>hello.exe
Hello, Rust Programming Language

第一回(?)はここまで。