Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Rust 超入門 
Chris Birchall @ M3 
2014/10/28 
#learnrust_jp
今日の流れ 
19:00〜Rust紹介 
19:30〜20:30 ゲームを作ってみよう! 
20:30〜成果・感想・質問・雑談 
21:00 おしまい
About me 
● Scalaおじさん 
● 流行りのGolangが気に入らない 
● 本を買ってください(ドヤ 
manning.com/birchall
Rust 
● Mozilla発(2009年頃〜) 
● システムプログラミング言語 
○ バイナリにコンパイルされる 
○ 速い 
○ ポインター 
○ GC無し 
● 関数型っぽい機能もある 
○ パターンマッチ 
○ クロージャー 
○ ...
ドキュメントがすごすぎる件
Hello, world! 
fn main() { 
println!("Hello, world!"); 
} 
$ rustc hello.rs 
$ ./hello 
Hello, world!
Algebraic Data Types 
● タプル 
● Struct 
● Enum 
enum Expr { 
Number(int), 
Plus(Expr, Expr), 
Minus(Expr, Expr), 
Mult(Expr...
状態/副作用の管理が面白い 
● 変数はデフォルトで immutable 
let mut a = 5i; 
● データの所有という概念がある 
○ 作った人が所有者 
○ 所有している物を人に貸すことができる 
■ Ex: 関数に渡す時 
○...
並列処理 
● Taskをspawnする 
● Taskが参照する変数の所有者になる 
○ メインスレッドで参照できなくなる 
● Channelを使ってTaskとやり取りする 
● Futureもある 
let (tx, rx) = chan...
Crate と Module 
● Crate = コンパイルの単位 
○ 1個のCrateをコンパイルして1個のライブラリ又 
はプログラムが出来上がる 
● 他のCrateに依存できる 
● Crate内にModuleを作れる 
● Mod...
Cargo 
● ビルドツール 
● 依存性管理 
# Cargo.toml 
[package] 
name = "hello" 
version = "0.0.1" 
authors = [ "Chris Birchall <c-birch...
気になるとこ、その他 
● traitは型クラスである 
● マクロがある 
● ポインターがある(こわい) 
● Stringが2種類ある 
● ScalaのIterateesに近い物がある 
○ Iterator, iterator ada...
ゲームを作ってみよう 
初級:あっち向いてホイ! 
中級:数字推測ゲーム 
上級:オセロ 
目標 
● ゲームが動く! 
● 標準ライブラリを使う 
● Cargoを使う。外部dependencyを使う 
● Crateとしてパッケージする
Upcoming SlideShare
Loading in …5
×
Upcoming SlideShare
Halide, Darkroom - 並列化のためのソフトウェア・研究
Next
Download to read offline and view in fullscreen.

Share

Rust 超入門

Download to read offline

Rust

Related Books

Free with a 30 day trial from Scribd

See all

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としてパッケージする
  • ssuser474fa1

    May. 11, 2021
  • ReiYamasita

    Aug. 28, 2017
  • syuichitsuji

    Jan. 1, 2017
  • mopinfish

    Jun. 4, 2016
  • bundai223

    Jul. 9, 2015
  • KaiJiang4

    Jul. 4, 2015
  • takenta

    Jun. 14, 2015
  • kamiyatoshihiro

    Jun. 12, 2015
  • scova0731

    Jan. 1, 2015
  • wx257osn2

    Nov. 11, 2014
  • rekimurakami

    Oct. 28, 2014

Rust

Views

Total views

3,886

On Slideshare

0

From embeds

0

Number of embeds

182

Actions

Downloads

14

Shares

0

Comments

0

Likes

11

×