Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Rustちょっと触ってみた
Search
Hiroaki Osawa
January 17, 2020
Programming
320
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rustちょっと触ってみた
Hiroaki Osawa
January 17, 2020
More Decks by Hiroaki Osawa
See All by Hiroaki Osawa
健康保険証がなくなるらしい!?
qwyng
0
1.1k
My Gems for AtCoder
qwyng
0
98
Benefits of contributing to OSS
qwyng
0
540
Elixirとパターンマッチ
qwyng
0
560
Other Decks in Programming
See All in Programming
Будущее локальных LLM – Алексей Голобурдин, PythoNN
sobolevn
0
110
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
600
조합이폭발하는디자인시스템이걸눈으로도테스트하라고요
giljongyu
0
720
TS 7.0 で baseUrl が使えなくなった今、パスエイリアスをどうするか
bicstone
2
530
作れるエンジニアから、価値を届けるエンジニアへ
ryunakayama
1
230
우리의 Nitro Modules는 당신의 Turbo Modules보다 아름답다
l2hyunwoo
0
250
느린 네트워크와 저사양 디바이스 사용자를 위한 웹뷰 로딩 시간 개선기
kmkim
1
210
社内AIエージェント「Askワンバン」における コストチューニングの取り組み
t0yohei
0
160
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
2k
AI駆動開発4年目の現在地(『あなたはFDEになるべきか?』イベント資料)
kumaiu
0
150
PyConTW 2026 - AI Coding 不只是工具升級, 區域醫院醫療資訊系統協作開發與資訊團隊轉型實踐
cclai999
0
240
[DroidKnights 2026] Workflow AX: From Auto-Documented Policies to E2E Testing
raeminkang
0
540
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
56
10k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
350
Context Engineering - Making Every Token Count
addyosmani
9
1.3k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
We Have a Design System, Now What?
morganepeng
55
8.4k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
340
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
760
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
630
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Designing for Timeless Needs
cassininazir
1
550
Why Our Code Smells
bkeepers
PRO
340
58k
Transcript
Rust ちょっと触ってみた @Hiroaki Osawa
年末休みに Rust 書いてました https://github.com/QWYNG/github-issue
今⽇話すこと Rust つまづきポイント Rust のよかったところ まとめ
Rust つまづきポイント そもそもコンパイラ通すのが⼤変
所有権 変数の束縛には所有権をもたせるという特性がある。 let v = vec![1, 2, 3]; let v2
= v; println!("v[0] is: {}", v[0]); 所有権が v2 に移⾏しているためヒープ上の 1, 2, 3 という実データに対して v も v2 も参照し ている状態は Rust 的に OUT
⽂字列型の種類が複数 いわゆる⽂字列には、メモリ⻑が決定されている組み込みの str と、メモリ⻑が固定さ れていない標準ライブラリにある String 型がある。 String 型はヒープ(スレッド間で共有できるメモリ領域)に格納可変。 str
の実データは作成⽅法によって異なる。 実際にコード内で "string" のように書くと静的領域に実データのある &str 型になるので Github からのレスポンスを String として扱う時に⾊々変換しなくてはならない。
Rust のよかったところ
パターンマッチ 最⾼ of 最⾼
Result 型と Option 型 多くの関数がこの 2 つのうちどちらかを返すことが多い。 Option は None
もしくは Some(値)を返すという型。 None は null のようなもの。 返り値書くときには Some(1) や None という書き⽅をする。 Result 例えば run みたいな関数があったとして pub fn run(args: Vec<String>) -> Result<i32, Box<dyn Error>> ようにエラーを返すかもしれないことを明記できる型。 返り値書くときには Ok(1) や Err(ParseError) という書き⽅をする。 これらの型で返された値を実際の値として扱うには unwrap() をするか、 process(args)? のように末尾に ? 演算⼦をつけて例外や None が出たら関数全体としてエ ラーや None を返すということを明⽰する必要がある。
Result 型と Option 型 コードを読む側、使う側として この 2 つの型はとても便利。 エラーを?でキャッチできるしこの関数にエラー処理が任されているんだなというの がひと⽬で分かる。
慣れると余計なエラーや null の処理挟まなくて良くなるので便利そう。
クロスコンパイル 最終的に機械語になって⼈に配布できるというのが Ruby から⼊るとかなり画期的。 タグ付けしたら GithubAction で複数 OS に対してバイナリをビルドして zip
にして リリースできる。
cargo Elixir と同じで、ドキュメント⽣成やテストが⾔語に組み込まれているのもモダンな⾔語感が あってよかった。リンターもしっかり搭載。
ビルド通ったときの安⼼感 Rust でビルドできるということはメモリを贅沢につかってこそすれ危険に利⽤してない ことの証明 常にメモリのことを考えたコードが強制される
俺は今 Rust というかっこいい⾔語で開発しているという謎の興奮 これが 9 割
まとめ Rust 本当になにもわからん。でも実践 Rust ⼊⾨は良書です。