Please enable JavaScript.
Coggle requires JavaScript to display documents.
Rust编程之道 出版年: 2019-1
ISBN: 9787121354854
作者 張漢東
出版社: 电子工业出版社
…
Rust编程之道
- 出版年: 2019-1
- ISBN: 9787121354854
- 作者 張漢東
- 出版社: 电子工业出版社
- Sample Code
1.4 Rust 代码如何执行
- Rust 屬於跨平台語言
- Rust 編譯器屬於 LLVM 編譯前端
- LLVM 編譯 LLVM IR 到各平台
原碼到機械碼
- 源碼經過分詞解析生成 AST
- AST 簡化處理為 HIR(High Level IR)
- HIR 編譯為MIR(Middle IR)
- MIR 編譯為 LLVM IR
- LLVM IR 輸出機械碼
MIR
1.2.2 零成本抽象
- 抽象能力執行期不帶有性能損耗
- 編譯階段處理抽象
- 建立在 Trait 和泛型
1.2.1 内存安全
- 保證類型安全
- 安全內存管理模型透過類型系統實現
- 內存安全表示不會出現內存訪問錯誤
- 編譯階段對類型檢查
所有權系統
- 每個被分配的內存都有一個獨佔所有權的指針
- 指針銷毀,內存才會釋放
- 借鑑 C++ 的 RAII 機制
生命週期
借用
1.2.3 實用性
錯誤處理機制
- 失敗: 使用斷言
- 錯誤: 使用 Option<T> 和 Result<T>
- 異常: 無法處理的錯誤
FFI
- 兼容 C-ABI
- 語言層級區分 Safe Rust 和 Unsafe Rust
- Unsafe 用於外部系統, 需要人員保證安全
包管理器 Cargo
- Rust 代碼以 crate 為編譯和分發單位
- Cargo 提供相關指令維護整個包的周期
- Cargo 提供插件機制
- 包可發布到 crates.io
學習 Rust 態度
1.1 緣起
- Graydon Hoare 開發
- 追求安全, 並發和性能的系統級語言
-
第2 章 语言精要
2.1 Rust 语言的基本构成
2.1.1 语言规范
2.1.2 编译器
- 官方編譯器 rustc
- 可輸出執行檔, 靜態褲和動態庫
- 跨平台支援
- 支援交叉編譯
- rust 語言開發
- 將源碼翻譯為 LLVM IR
2.1.3 核心库
- 標準庫的基礎
- 定義語言核心
- 不依賴作業系統和網路庫
-
#! [no_std]
引入核心庫
- 核心庫和標準庫有重疊
- 嵌入應用核心庫是必要
2.1.4 标准库
2.1.5 包管理器
- 按規則組織的 rs 編譯成 crate
- crate 是編譯和共享的基本單位
- 可使用 cargo 管理 crate
2.2 语句与表达式
Statement
- 執行操作
- Declaration statement
- Expression statement
Expression
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-