Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Morning Talk -About Rust-

02f940926caaa16d4657150117fc6438?s=47 Taisei Ito
May 07, 2020
66

Morning Talk -About Rust-

02f940926caaa16d4657150117fc6438?s=128

Taisei Ito

May 07, 2020
Tweet

Transcript

  1. Morning Talk ~Rust学んでみた~ 2020/5/7 (木)

  2. 話すこと・話せないこと • 話すこと ◦ Rust学ぼうと思ったモチベ ◦ 簡単な解説 ◦ ちょっと作る ◦

    良さそうな書き方 • 話せないこと ◦ 他言語との比較
  3. 自己紹介 • 伊藤太斉 ◦ Twitter/Github: kaedemalu ◦ Like: Camera, Ski,

    Craft Beer etc... • 技術領域 ◦ GCP, Terraform, Ansible, Ruby on Rails • コミュニティ ◦ GCPUG Shonan Staff ◦ CloudNative Days Tokyo Committee
  4. Motivation 1

  5. そもそも • デジタルアートみたいなことをしたい ◦ ex.) チームラボ ◦ プロジェクションマッピング • サカナクションが好き

    ◦ これでエンジニア目指した節ある
  6. きっかけ • 何か言語ちゃんとできるようになりたい • Security関連ででRust出てきた • なんか人気出始めている • 周りが触ってないものやりたい

  7. Explanation 2

  8. Rustって

  9. Rustって これはラスク

  10. Rustって • Mozillaとコミュニティによって開発された言語 • 2015年に1.0がリリース • MicrosoftがCとかC++の代わりに使い始めている ◦ 確か実験段階だが、成功しているとのこと

  11. Rustの特徴 • 「安全性、速度、並行性」に優れている • C/C++と同等の処理速度 ◦ これらの代替を目指している • 自動でメモリの解放をしてくれる •

    変数の扱い方が独特
  12. 所有権について fn main() { let color = String::form( "red"); println!("apple

    is {}", color); } 「apple is red」になる 所有権が「color」 fn main() { let color = String::form("red"); let color2 = color; println!("apple is {}", color); } エラーになる 所有権が「color2」に 移っているから
  13. Goだと func main() { var color = "red" fmt.Println( "apple

    is ", color) } 「apple is red」になる func main() { var color = "red" var color2 = color fmt.Println("apple is", color) fmt.Println("apple is", color2) } どちらも「apple is red」になる 「color」も「color2」も 使える
  14. 「借用」で一時的に参照させる fn main() { let color = String::form("red"); let color2

    = &color; println!("apple is {}", color); } 「借用」という考え方 あくまで所有権はcolor colorがcolor2に変数を 貸し出す
  15. The first Rust 3

  16. プロジェクト作成する • cargoというパッケージマネージャーをインストール ◦ Javascriptでいう npm にあたる • 以下コマンドでプロジェクト作成 $

    cargo new PROJECT_NAME
  17. プロジェクト階層 • プロジェクト作成で左のもの が作成できる

  18. src/main.rs • いきなりハローワールド fn main() { println!("Hello, world!"); }

  19. Cargo.toml • このRustの設定ファイル • ライブラリを列挙する [package] name = "sample-project" version

    = "0.1.0" authors = ["git-name <mail@mail.com>"] edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] # ここにライブラリ書き加える sdl2 = “0.32.2”
  20. Good point? 4

  21. match文

  22. match文 それ火つけるやつ

  23. match文 • 他の言語のcase文になる • if文がかなり複雑になるとき ◦ 何パターンかmatchする ケースを出しておく ◦ それ以外の部分は

    まとめてハンドリング extern crate rand; use rand::Rng; fn main() { println!("Game start!"); let rand_number = rand::thread_rng().gen_range(1, 10); println!("random nuumber is {}", rand_number); match rand_number { 1 => println!("one"), 2 => println!("two"), 3 => println!("three"), _ => println!("something else"), } }
  24. まとめ • プログラミング楽しい • 資料作るにあたって公式がとっても有効だった • GolangのGo docに当たるものがRustにもある ◦ crates.io

    • プログラミング楽しい
  25. Thank you for listening.