Successfully reported this slideshow.
Your SlideShare is downloading. ×

Rust 超入門

Ad

Rust 超入門 
Chris Birchall @ M3 
2014/10/28 
#learnrust_jp

Ad

今日の流れ 
19:00〜Rust紹介 
19:30〜20:30 ゲームを作ってみよう! 
20:30〜成果・感想・質問・雑談 
21:00 おしまい

Ad

About me 
● Scalaおじさん 
● 流行りのGolangが気に入らない 
● 本を買ってください(ドヤ 
manning.com/birchall

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Upcoming SlideShare
社内Lt
社内Lt
Loading in …3
×

Check these out next

1 of 13 Ad
1 of 13 Ad

More Related Content

Rust 超入門

  1. 1. Rust 超入門 Chris Birchall @ M3 2014/10/28 #learnrust_jp
  2. 2. 今日の流れ 19:00〜Rust紹介 19:30〜20:30 ゲームを作ってみよう! 20:30〜成果・感想・質問・雑談 21:00 おしまい
  3. 3. About me ● Scalaおじさん ● 流行りのGolangが気に入らない ● 本を買ってください(ドヤ manning.com/birchall
  4. 4. Rust ● Mozilla発(2009年頃〜) ● システムプログラミング言語 ○ バイナリにコンパイルされる ○ 速い ○ ポインター ○ GC無し ● 関数型っぽい機能もある ○ パターンマッチ ○ クロージャー ○ Algebraic Data Types ○ 型推論
  5. 5. ドキュメントがすごすぎる件
  6. 6. Hello, world! fn main() { println!("Hello, world!"); } $ rustc hello.rs $ ./hello Hello, world!
  7. 7. Algebraic Data Types ● タプル ● Struct ● Enum enum Expr { Number(int), Plus(Expr, Expr), Minus(Expr, Expr), Mult(Expr, Expr), Div(Expr, Expr), }
  8. 8. 状態/副作用の管理が面白い ● 変数はデフォルトで immutable let mut a = 5i; ● データの所有という概念がある ○ 作った人が所有者 ○ 所有している物を人に貸すことができる ■ Ex: 関数に渡す時 ○ mutable と immutable な貸し出し ○ コンパイラがルールをチェックする
  9. 9. 並列処理 ● Taskをspawnする ● Taskが参照する変数の所有者になる ○ メインスレッドで参照できなくなる ● Channelを使ってTaskとやり取りする ● Futureもある let (tx, rx) = channel(); spawn(proc() { tx.send(" タスクだよーん".to_string()); }); let message = rx.recv(); println!("{}", message);
  10. 10. Crate と Module ● Crate = コンパイルの単位 ○ 1個のCrateをコンパイルして1個のライブラリ又 はプログラムが出来上がる ● 他のCrateに依存できる ● Crate内にModuleを作れる ● Moduleはpublicな関数をexportする mod hello { pub fn print_hello() { println!("Hello, world!"); } }
  11. 11. Cargo ● ビルドツール ● 依存性管理 # Cargo.toml [package] name = "hello" version = "0.0.1" authors = [ "Chris Birchall <c-birchall@m3.com>" ] [[bin]] name = "hello"
  12. 12. 気になるとこ、その他 ● traitは型クラスである ● マクロがある ● ポインターがある(こわい) ● Stringが2種類ある ● ScalaのIterateesに近い物がある ○ Iterator, iterator adapter, consumer ● 無限ループ用のキーワードがある(loop)
  13. 13. ゲームを作ってみよう 初級:あっち向いてホイ! 中級:数字推測ゲーム 上級:オセロ 目標 ● ゲームが動く! ● 標準ライブラリを使う ● Cargoを使う。外部dependencyを使う ● Crateとしてパッケージする

×