Upgrade to Pro — share decks privately, control downloads, hide ads and more …

初探Rust.pdf

Avatar for Johnny Lin Johnny Lin
February 08, 2023

 初探Rust.pdf

介紹Rust程式語言,並講解核心概念: ownership。

Avatar for Johnny Lin

Johnny Lin

February 08, 2023
Tweet

More Decks by Johnny Lin

Other Decks in Programming

Transcript

  1. 什麼是 Rust ? 由 Graydon Hoare 所設計,起 初只是一個 Side Project

    ,後來 他進入了 Mozilla ,Mozilla 開 始贊助並主導開發,最後也將 FireFox 的 C++ 的程式碼部 分,取代為成安全性較高的 Rust 。 讓每個人都能打造出可靠 又高效軟體的程式語言. “ “
  2. Deno 由 Node.JS 之父 Ryan Dahl 創建 基於 V8 引擎

    建構 JS 與 TS 執行環境 解決 Node.js 的缺點
  3. 已採用的公司 Microsoft 將 Rust 集成到其大型 C/ C++ 代碼工程中 Facebook 使用

    Rust 重寫了之前用 Python 編寫的源碼控制後端 Discord 從 Go 轉換到 Rust Figma 從 TypeScript 轉換到 Rust
  4. Heap 儲存全域變數 不規律不可預測 動態記憶體空間 沒有 GC : C++ 需用 delete

    語法來清除物件 有 GC :Java 的 Garbage collector 為了防止 memory leak 會自動釋 放 heap 上的記憶體空間
  5. 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
  6. 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 ?
  7. 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 )!
  8. 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