rust

Owership

https://doc.rust-lang.org/book/ownership.html を途中まで。 関数の中で関数が宣言できるらしい。 コメントにしている箇所は、コメントアウトするとエラーになる処理。 fn main() { let v = vec![1, 2, 3]; println!("v[0] is: {}", v[0]); let v2 = v; //…

Vectors

https://doc.rust-lang.org/book/vectors.html 書き換え可能な参照と、書き換え不可能な参照がある。 fn main() { let mut v = vec![1, 2, 3, 4, 5]; for i in &v { // *i = *i + 1; // 不可能 println!("A reference to {}", i); } for i in &mut v { *i = …

Loops

https://doc.rust-lang.org/book/loops.html Loop labels( 条件付きgoto )がよい。 サンプルコードはcontinueだけだったが、breakでも意図通り動く。 fn main() { 'outer: for x in 0..10 { 'inner: for y in 0..10 { if x % 2 == 0 { continue 'outer; } //…

if #2

https://doc.rust-lang.org/book/if.html 3項演算子的な使い方ができる。 println!の引数に使えるかを試してみたところ普通に動いた。 fn main() { let y = if x == 5 { 10 } else { 15 }; // y: i32 println!("y is {}", y); println!("? is {}", if x == 5…

if

https://doc.rust-lang.org/book/if.html カッコが無くても問題ない。 fn main() { let x = 5; if x == 5 { println!("x is five!"); } if (x == 5) { println!("x is five!"); } } 逆にカッコをつけると警告が・・・ $ cargo run warning: unnecessary pare…

Comments

Comments。 rustdocというツールでコメントからドキュメント生成できるらしい。Markdownで記載できるらしい。 ブロックコメントについて説明は無かったけども、/* comment */は普通にコメントになった。 //! # The Rust Standard Library //! //! The Rust S…

Primitive Types

Primitive Typesを読む。 型の名称がPythonっぽい印象。

Functions

Functionsを読む。 return x + 1;とx + 1(セミコロンがない)が同じ扱いなのが面白い。 あと、プロトタイプ宣言不要なのがC言語から入った身としては嬉しい。 fn main() { let f: fn(i32) -> i32; // 関数ポインタ f = add_one; print_number(5); print_sum(5…

Variable Bindings

Variable Bindingsを読む。 幾つか面白い動きがあった。デフォルトが書き換え不可(immutable)だからできる動きなんだろうな。 fn main() { /* スコープ:{} 以下でのみ有効 */ let x: i32 = 17; { let y2: i32 = 3; println!("The value of x is {} and valu…

Guessing Gameを読み進める4

Guessing Gameを最後まで読み進めた。 loop、continue、breakなどループ関係の文法が出てきた。 無限ループが簡単に作れるのと、繰り返し処理と分かり易いのが良い。

Guessing Gameを読み進める3

Guessing Gameを読み進める。 ( Comparing guessesを読んだ。 ) 型チェックが結構厳しめっぽい。

Guessing Gameを読み進める2

Guessing Gameを読み進める。 ( Generating a secret numberを読んだ。 ) Cargo.tomlにrand="0.3.0"を追記すると、cargo buildするだけで、関連するライブラリを引っ張ってきてくれる。便利。 $ cargo build Updating registry `https://github.com/rust-lan…

Guessing Gameを読み進める

Guessing Gameを読み進める。 let foo = 5; // immutable. let mut bar = 5; // mutable 普通に宣言すると書き換え不可の変数になるみたい。

Cargo

Cargoというビルドツールを使ってみる。 [package] name = "hello_world" version = "0.0.1" authors = [ "MIURA Yasuyuki <xxxxxxxx@xxxxxx.xxx>" ] $ mkdir src $ mv main.rs src/main.rs $ cargo build $ cargo run ソースファイルをsrcディレクトリに置く必要があったり、最近</xxxxxxxx@xxxxxx.xxx>…

ハローワールド

Rustでハローワールド。 fn main() { println!("Hello, world!"); } !が付くと、普通の関数ではなく、マクロになるらしい。詳しいことは今後学ぶ。 実行は以下。 $ rustc main.rs $ ./main 拡張子は、rsなんですね。

Rust始めます

Rustの勉強を始めます。 今日は環境をインストールするところまで。 $ curl https://sh.rustup.rs -sSf | sh $ source $HOME/.cargo/env $ rustc --version 次回以降も使えるようにsource $HOME/.cargo/envを$HOME/.bash_profileに追記。