Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
初探Rust.pdf
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Johnny Lin
February 08, 2023
Programming
0
120
初探Rust.pdf
介紹Rust程式語言,並講解核心概念: ownership。
Johnny Lin
February 08, 2023
Tweet
Share
More Decks by Johnny Lin
See All by Johnny Lin
Clean Code
johnny178
0
140
Other Decks in Programming
See All in Programming
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
750
「ブロックテーマでは再現できない」は本当か?
inc2734
0
1k
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
610
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
230
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
180
Data-Centric Kaggle
isax1015
2
780
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
21
7.4k
Fluid Templating in TYPO3 14
s2b
0
130
AgentCoreとHuman in the Loop
har1101
5
250
Package Management Learnings from Homebrew
mikemcquaid
0
230
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
280
AIエージェント、”どう作るか”で差は出るか? / AI Agents: Does the "How" Make a Difference?
rkaga
4
2k
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
GraphQLとの向き合い方2022年版
quramy
50
14k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
110
Automating Front-end Workflow
addyosmani
1371
200k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
190
Paper Plane
katiecoart
PRO
0
46k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
初探 Rust Johnny Lin @Anue Tech Sharing, 2023/02/08
Outline 什麼是 Rust ? 特色 應用 核心概念 Code Rules Recap
什麼是 Rust ? 由 Graydon Hoare 所設計,起 初只是一個 Side Project
,後來 他進入了 Mozilla ,Mozilla 開 始贊助並主導開發,最後也將 FireFox 的 C++ 的程式碼部 分,取代為成安全性較高的 Rust 。 讓每個人都能打造出可靠 又高效軟體的程式語言. “ “
特色 高效能 無垃圾回收機制(garbage collection) ,採用方式是 Ownership 可靠性 豐富的型別系統與所有權模型確保了記憶體以及執行緒的安全,在 編譯時期就能夠解決各式各樣的錯誤
特色
2016
2017
2018
2019
2020
2021
2022
應用
Deno 由 Node.JS 之父 Ryan Dahl 創建 基於 V8 引擎
建構 JS 與 TS 執行環境 解決 Node.js 的缺點
SWC 可擴展的基於 Rust 的前端構 建工具,核心功能相當於 Babel 目前為 Next.js 預設的 Compiler
,相較於 Babel 多 了 17 倍的速度
More and more... 命令列 WebAssembly 嵌入式系統
已採用的公司 Microsoft 將 Rust 集成到其大型 C/ C++ 代碼工程中 Facebook 使用
Rust 重寫了之前用 Python 編寫的源碼控制後端 Discord 從 Go 轉換到 Rust Figma 從 TypeScript 轉換到 Rust
核心概念
Ownership 所有權 在 Rust 中用來管理程式記憶體的一系列規則
比較 其他語言 垃圾回收機制,在程式執行時不斷尋找不再使用的記憶體 開發者必須親自分配和釋放記憶體 Rust 記憶體由所有權系統管理,編譯器會在編譯時加上一些規則檢查 不會在你程式的執行期間用到任何效能
Ownership 設計原因 解決追蹤哪個部分的程式用了哪些在 heap 上的資料 最佳化在 heap 上重複的資料 清除在 heap
上已經不用的資料
Memory
Stack 儲存 Value Types (Primitives) LIFO ( 後進先出) 有順序
Heap 儲存全域變數 不規律不可預測 動態記憶體空間 沒有 GC : C++ 需用 delete
語法來清除物件 有 GC :Java 的 Garbage collector 為了防止 memory leak 會自動釋 放 heap 上的記憶體空間
所有權規則 Rust 中每個數值都有個擁有者(owner ) 同時間只能有一個擁有者 當擁有者離開作用域時,數值就會被丟棄
Code in ownership
變數作用域 當 s 進入作用域時,它是有 效的 它持續被視為有效直到它離 開作用域為止 自動呼叫 drop 函式並清理該
變數在 Stack 上的資料
Copy y 在記憶體中複製了一整份完整 x 的資料
s2 name value ptr len 5 capacity 5 index value
0 h 1 e 2 l 3 l 4 o s1 name value ptr len 5 capacity 5 index value 0 h 1 e 2 l 3 l 4 o Move
s1 name value ptr len 5 capacity 5 index value
0 h 1 e 2 l 3 l 4 o s2 name value ptr len 5 capacity 5 Move Shadow Copy ?
s1 name value ptr len 5 capacity 5 index value
0 h 1 e 2 l 3 l 4 o s2 name value ptr len 5 capacity 5 Move Shadow Copy ? 造成雙重釋放(double free )!
s1 name value ptr len 5 capacity 5 index value
0 h 1 e 2 l 3 l 4 o s2 name value ptr len 5 capacity 5 Move
Ownership and Function
None
Rules Recap Rust 中每個數值都有個擁有者(owner ) 同時間只能有一個擁有者 當擁有者離開作用域時,數值就會被丟棄
Reference https://www.rust-lang.org/zh-TW https://ithelp.ithome.com.tw/users/20119807/ironman/2447 https://www.guru99.com/stack-vs-heap.html https://www.techug.com/post/famous-companies-that-use-rust-in- production-and-their-reasons-for-choosing-rust/
Thank you for listening