Submit Search
Upload
Rustを勉強してみた!
•
1 like
•
636 views
ssmylh
Follow
開発合宿 at 鳴子温泉での発表資料です。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 24
Download now
Download to read offline
Recommended
How to read linux kernel
How to read linux kernel
Naoya Ito
Preludeのprecompile
Preludeのprecompile
Glass_saga
KVM10分(位で)入門
KVM10分(位で)入門
Kenichiro MATOHARA
Programming camp code reading
Programming camp code reading
Hiro Yoshioka
Programming camp 2008, Codereading
Programming camp 2008, Codereading
Hiro Yoshioka
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
sandai
Linux デスクトップ環境のセキュリティを考えてみる
Linux デスクトップ環境のセキュリティを考えてみる
Kenichiro MATOHARA
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門
sandai
Recommended
How to read linux kernel
How to read linux kernel
Naoya Ito
Preludeのprecompile
Preludeのprecompile
Glass_saga
KVM10分(位で)入門
KVM10分(位で)入門
Kenichiro MATOHARA
Programming camp code reading
Programming camp code reading
Hiro Yoshioka
Programming camp 2008, Codereading
Programming camp 2008, Codereading
Hiro Yoshioka
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
sandai
Linux デスクトップ環境のセキュリティを考えてみる
Linux デスクトップ環境のセキュリティを考えてみる
Kenichiro MATOHARA
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門
sandai
Ssaw08 0617
Ssaw08 0617
Atsushi Tadokoro
Ruby build
Ruby build
Yuichiro Naito
Effective Java 輪読会 項目69-70
Effective Java 輪読会 項目69-70
Appresso Engineering Team
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門
sandai
20131128 perl beginners_11_profiler
20131128 perl beginners_11_profiler
Syun Fuji
【学習メモ#11th】12ステップで作る組込みOS自作入門
【学習メモ#11th】12ステップで作る組込みOS自作入門
sandai
Oss dev-04
Oss dev-04
Kohei KaiGai
【学習メモ#6th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門
sandai
MongoDBではじめるカジュアルなタイムラインシステム
MongoDBではじめるカジュアルなタイムラインシステム
Hitoshi Asai
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
エンジニア勉強会 エスキュービズム
Effective Java 輪読会 項目71-73
Effective Java 輪読会 項目71-73
Appresso Engineering Team
Effective Java 輪読会 項目66-68
Effective Java 輪読会 項目66-68
Appresso Engineering Team
[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御
Yuto Takei
プロセスとコンテキストスイッチ
プロセスとコンテキストスイッチ
Kazuki Onishi
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門
sandai
【学習メモ#3rd】12ステップで作る組込みOS自作入門
【学習メモ#3rd】12ステップで作る組込みOS自作入門
sandai
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
Taisuke Yamada
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。
Kazuki Onishi
effective modern c++ chapeter36
effective modern c++ chapeter36
Tatsuki SHIMIZU
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
Minero Aoki
Long Short-term Memory
Long Short-term Memory
nishio
More Related Content
What's hot
Ssaw08 0617
Ssaw08 0617
Atsushi Tadokoro
Ruby build
Ruby build
Yuichiro Naito
Effective Java 輪読会 項目69-70
Effective Java 輪読会 項目69-70
Appresso Engineering Team
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門
sandai
20131128 perl beginners_11_profiler
20131128 perl beginners_11_profiler
Syun Fuji
【学習メモ#11th】12ステップで作る組込みOS自作入門
【学習メモ#11th】12ステップで作る組込みOS自作入門
sandai
Oss dev-04
Oss dev-04
Kohei KaiGai
【学習メモ#6th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門
sandai
MongoDBではじめるカジュアルなタイムラインシステム
MongoDBではじめるカジュアルなタイムラインシステム
Hitoshi Asai
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
エンジニア勉強会 エスキュービズム
Effective Java 輪読会 項目71-73
Effective Java 輪読会 項目71-73
Appresso Engineering Team
Effective Java 輪読会 項目66-68
Effective Java 輪読会 項目66-68
Appresso Engineering Team
[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御
Yuto Takei
プロセスとコンテキストスイッチ
プロセスとコンテキストスイッチ
Kazuki Onishi
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門
sandai
【学習メモ#3rd】12ステップで作る組込みOS自作入門
【学習メモ#3rd】12ステップで作る組込みOS自作入門
sandai
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
Taisuke Yamada
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。
Kazuki Onishi
What's hot
(18)
Ssaw08 0617
Ssaw08 0617
Ruby build
Ruby build
Effective Java 輪読会 項目69-70
Effective Java 輪読会 項目69-70
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門
20131128 perl beginners_11_profiler
20131128 perl beginners_11_profiler
【学習メモ#11th】12ステップで作る組込みOS自作入門
【学習メモ#11th】12ステップで作る組込みOS自作入門
Oss dev-04
Oss dev-04
【学習メモ#6th】12ステップで作る組込みOS自作入門
【学習メモ#6th】12ステップで作る組込みOS自作入門
MongoDBではじめるカジュアルなタイムラインシステム
MongoDBではじめるカジュアルなタイムラインシステム
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
Effective Java 輪読会 項目71-73
Effective Java 輪読会 項目71-73
Effective Java 輪読会 項目66-68
Effective Java 輪読会 項目66-68
[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御
プロセスとコンテキストスイッチ
プロセスとコンテキストスイッチ
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#3rd】12ステップで作る組込みOS自作入門
【学習メモ#3rd】12ステップで作る組込みOS自作入門
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
ラズパイでデバイスドライバを作ってみた。
ラズパイでデバイスドライバを作ってみた。
Similar to Rustを勉強してみた!
effective modern c++ chapeter36
effective modern c++ chapeter36
Tatsuki SHIMIZU
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
Minero Aoki
Long Short-term Memory
Long Short-term Memory
nishio
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した
t-sin
Kanazawa.js.Next
Kanazawa.js.Next
dynamis
歌舞伎座Tech#2 C++11 LT
歌舞伎座Tech#2 C++11 LT
roentgen_jp
あるmmapの話
あるmmapの話
nullnilaki
2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめ
Makiko Konoshima
Project Loom - 限定継続と軽量スレッド -
Project Loom - 限定継続と軽量スレッド -
Yuichi Sakuraba
YAPC::Asia Tokyo 2013 ランチセッション
YAPC::Asia Tokyo 2013 ランチセッション
Kuninobu SaSaki
Similar to Rustを勉強してみた!
(12)
effective modern c++ chapeter36
effective modern c++ chapeter36
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
Long Short-term Memory
Long Short-term Memory
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した
Kanazawa.js.Next
Kanazawa.js.Next
歌舞伎座Tech#2 C++11 LT
歌舞伎座Tech#2 C++11 LT
あるmmapの話
あるmmapの話
2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめ
Project Loom - 限定継続と軽量スレッド -
Project Loom - 限定継続と軽量スレッド -
YAPC::Asia Tokyo 2013 ランチセッション
YAPC::Asia Tokyo 2013 ランチセッション
Recently uploaded
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Recently uploaded
(12)
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Rustを勉強してみた!
1.
Rust を勉強してみた! ssmylh 2017/09/02 開発合宿at
鳴子温泉
2.
はじめに Rust はまだ数時間しか勉強してません。理解が浅いです。誤解や間違っているところはあると思います。
3.
モチベーション せっかくのまとまった時間があるので何か新しい事がしたかった。独特だと聞いていて、なんとなく気になっていた。当初、 をテーマとしていたが、いつの間にかこっちに。WASM
4.
Rust ? 速度、安全性、並行性の3つのゴールにフォーカスしたシステムプログラミング言語ゼロコスト抽象化ムーブセマンティクス保証されたメモリ安全性データ競合のないスレッドトレイトによるジェネリクス...
5.
こんな感じ fn fizzbuzz(n: s)
{ for i in 0..n { if i % 15 == 0 { println!("FizzBuzz"); } else if i % 3 == 0 { println!("Fizz"); } else if i % 5 == 0 { println!("Buzz"); } else { println!("{}", i); } } }
6.
こんな感じ fn even_squre_sum(n: isize)
-> isize { (0..n) .filter(|i| i % 2 == 0) .map(|i| i * i) .sum() } let expected = 4 + 16 + 36; assert_eq!(even_squre_sum(7), expected);
7.
こんな感じなんですが、今日は特に興味を持った 以下の機能について発表したいと思います。 所有権システムトレイト
8.
所有権システム
9.
所有権システム メモリ安全性、ゼロコスト抽象化独特!!以下の3つの概念から成り立つ。所有権借用ライフタイム
10.
所有権 値は資源であり、値を所有出来るのは一人の所有者のみ。変数束縛= 値の所有権を持つ。所有権は移動する(ムーブする)。(スコープから外れて)所有されていない状態になると、値は解放される。Copyな値は割り当て時にコピーされるので所有権の対象外。各種プリミティブな値はCopyな値。
11.
所有権- 例 fn main()
{ let x = "x".to_string(); let y = x; // 以下 y 所有権 //println!("{}", x); // 以下 関数 最後 str 外 時 値 解放 print(y); // print 所有権 //println!("{}", y); } fn print(str: String) { println!("{}", str); }
12.
所有権の例外(Copyな値) - 例 fn
main() { let x: i32 = 1; let y = x; // i32 Copy 実装 // y 割 当 時 作成 所有権 // 全 型 Copy 実装 println!("{}", x); }
13.
借用 所有権を持ったまま、値を他に貸し出す。ある型の参照型は、その型の借用と言う。イミュータブルな参照とミュータブルな参照がある。イミュータブルな参照は複数存在可能。ミュータブルな参照は同時に1つのみ。データ競合が発生しない。イミュータブルとミュータブルな参照は共存出来ない。値が解放された後には、その値は借用出来ない。
14.
借用- 例1 fn immutable_reference()
{ // 参照 同時 複数存在可能 let x = "x".to_string(); let y = &x; let z = &x; } fn mutable_reference() { // 参照 同時 1 存在可能 let mut x = "x".to_string(); let y = &mut x; //let z = &mut x; // 2 目 }
15.
借用- 例2 fn use_resource_after_frees()
{ let a: &i32; { let x = 1; // x 生存期間 超 借用 出来 以下 //a = &x; } }
16.
ライフタイム 参照が有効なスコープを記述する仕組み。ダングリングポインタを仕組み的に防ぐ。ブロックスコープや関数スコープによりライフタイムが区切られる。
17.
ライフタイム- 例 // 参照
持 構造体 明示的 ( 'a ) 必須 // 参照 構造体自体 参照 生存期間 長 必要 struct Misc<'a> { x: &'a i32, } fn main() { let a: &i32; { let y = &1; let m = Misc { x: y }; // 以下 許可 // a 外 値 参照 //a = m.x; } }
18.
トレイト
19.
トレイト Rust のトレイトは型クラス。アドホックポリモーフィズム既存の型に共通のインターフェイスを持たせられる。
20.
トレイト- 定義 trait Semigroup<T>
{ fn append(&self, that: T) -> T; } trait Monoid<T>: Semigroup<T> { fn zero() -> T; } impl Semigroup<i32> for i32 { fn append(&self, that: i32) -> i32 { *self + that } }
21.
トレイト- 実装 impl Monoid<i32>
for i32 { fn zero() -> i32 { 0 } } fn main() { let v1 = (1.append(2)).append(3); let v2 = 1.append(2.append(3)); assert_eq!(v1, v2); // self 引数 取 型名:: 名() 呼 出 可能 let zero = i32::zero(); assert_eq!(1.append(zero), 1); assert_eq!(zero.append(1), 1); }
22.
感想 新しい要素を持った言語を学ぶのは楽しい。もっとRustを勉強してみたくなった。特に平行処理関連。
23.
今日のコード https://github.com/ssmylh/try_rust
24.
参考にしたもの 最速で知る!プログラミング言語Rustの基本機能とメモリ管理【第二言語としてのRust】プログラミング言語Rust Rust by Example
Download now