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
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
130
Other Decks in Programming
See All in Programming
Vibe coding コードレビュー
kinopeee
0
460
AWS Serverless Application Model入門_20250708
smatsuzaki
0
120
コンテキストエンジニアリング Cursor編
kinopeee
1
700
Kiroの仕様駆動開発から見えてきたAIコーディングとの正しい付き合い方
clshinji
1
130
CEDEC 2025 『ゲームにおけるリアルタイム通信への QUIC導入事例の紹介』
segadevtech
3
960
Webinar: AI-Powered Development: Transformiere deinen Workflow mit Coding Tools und MCP Servern
danielsogl
0
160
STUNMESH-go: Wireguard NAT穿隧工具的源起與介紹
tjjh89017
0
380
The State of Fluid (2025)
s2b
0
190
開発チーム・開発組織の設計改善スキルの向上
masuda220
PRO
13
6.9k
MCPで実現するAIエージェント駆動のNext.jsアプリデバッグ手法
nyatinte
6
720
The state patternの実践 個人開発で培ったpractice集
miyanokomiya
0
150
Scale out your Claude Code ~自社専用Agentで10xする開発プロセス~
yukukotani
9
2.5k
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
5.7k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Six Lessons from altMBA
skipperchong
28
4k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
890
Unsuck your backbone
ammeep
671
58k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
560
Documentation Writing (for coders)
carmenintech
73
5k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
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