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