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
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
初探Rust.pdf
介紹Rust程式語言,並講解核心概念: ownership。
Johnny Lin
February 08, 2023
More Decks by Johnny Lin
See All by Johnny Lin
Clean Code
johnny178
0
150
Other Decks in Programming
See All in Programming
A2UI という光を覗いてみる
satohjohn
1
170
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
280
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
320
ローカルLLMでどこまでコードが書けるか -縮小版 / How much code can be written on a local LLM Shortened
kishida
2
150
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
5.6k
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
230
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
260
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
280
技術記事、 専門家としてのプログラマ、 言語化
mizchi
13
7k
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
200
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
130
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Navigating Team Friction
lara
192
16k
RailsConf 2023
tenderlove
30
1.5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
230
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
WCS-LA-2024
lcolladotor
0
670
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Into the Great Unknown - MozCon
thekraken
41
2.6k
Rails Girls Zürich Keynote
gr2m
96
14k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
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