×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Rust ちょっと触ってみた @Hiroaki Osawa
Slide 2
Slide 2 text
年末休みに Rust 書いてました https://github.com/QWYNG/github-issue
Slide 3
Slide 3 text
今⽇話すこと Rust つまづきポイント Rust のよかったところ まとめ
Slide 4
Slide 4 text
Rust つまづきポイント そもそもコンパイラ通すのが⼤変
Slide 5
Slide 5 text
所有権 変数の束縛には所有権をもたせるという特性がある。 let v = vec![1, 2, 3]; let v2 = v; println!("v[0] is: {}", v[0]); 所有権が v2 に移⾏しているためヒープ上の 1, 2, 3 という実データに対して v も v2 も参照し ている状態は Rust 的に OUT
Slide 6
Slide 6 text
⽂字列型の種類が複数 いわゆる⽂字列には、メモリ⻑が決定されている組み込みの str と、メモリ⻑が固定さ れていない標準ライブラリにある String 型がある。 String 型はヒープ(スレッド間で共有できるメモリ領域)に格納可変。 str の実データは作成⽅法によって異なる。 実際にコード内で "string" のように書くと静的領域に実データのある &str 型になるので Github からのレスポンスを String として扱う時に⾊々変換しなくてはならない。
Slide 7
Slide 7 text
Rust のよかったところ
Slide 8
Slide 8 text
パターンマッチ 最⾼ of 最⾼
Slide 9
Slide 9 text
Result 型と Option 型 多くの関数がこの 2 つのうちどちらかを返すことが多い。 Option は None もしくは Some(値)を返すという型。 None は null のようなもの。 返り値書くときには Some(1) や None という書き⽅をする。 Result 例えば run みたいな関数があったとして pub fn run(args: Vec) -> Result> ようにエラーを返すかもしれないことを明記できる型。 返り値書くときには Ok(1) や Err(ParseError) という書き⽅をする。 これらの型で返された値を実際の値として扱うには unwrap() をするか、 process(args)? のように末尾に ? 演算⼦をつけて例外や None が出たら関数全体としてエ ラーや None を返すということを明⽰する必要がある。
Slide 10
Slide 10 text
Result 型と Option 型 コードを読む側、使う側として この 2 つの型はとても便利。 エラーを?でキャッチできるしこの関数にエラー処理が任されているんだなというの がひと⽬で分かる。 慣れると余計なエラーや null の処理挟まなくて良くなるので便利そう。
Slide 11
Slide 11 text
クロスコンパイル 最終的に機械語になって⼈に配布できるというのが Ruby から⼊るとかなり画期的。 タグ付けしたら GithubAction で複数 OS に対してバイナリをビルドして zip にして リリースできる。
Slide 12
Slide 12 text
cargo Elixir と同じで、ドキュメント⽣成やテストが⾔語に組み込まれているのもモダンな⾔語感が あってよかった。リンターもしっかり搭載。
Slide 13
Slide 13 text
ビルド通ったときの安⼼感 Rust でビルドできるということはメモリを贅沢につかってこそすれ危険に利⽤してない ことの証明 常にメモリのことを考えたコードが強制される
Slide 14
Slide 14 text
俺は今 Rust というかっこいい⾔語で開発しているという謎の興奮 これが 9 割
Slide 15
Slide 15 text
まとめ Rust 本当になにもわからん。でも実践 Rust ⼊⾨は良書です。