程式語言千百種,每種都宣稱自己最棒,但JAVA、C仍然橫行霸道。然後在RUST出現之後,生而快速、優雅、穩固、平行執行的DNA讓這個新興的語言立即席捲市場。包括了新的Mozilla核心Servo、新一代的OS Redox以及乙太幣的虛擬機Parity都是用RUST開發的。學會一門新的語言等於開啟一個全新的視野,千千萬萬的程式語言,RUST一定是你最好的自我投資。
目前Rust被陸續應用在區塊鏈、遊戲、WebAssembly技術、機器學習、分散式資料庫、網路服務基礎設施、Web架構、作業系統和嵌入式等領域。時代在變化,未來的網際網路需要的是安全和效能並重的語言,Rust必然會在其中大放異彩。
Rust語言融合了多種語言特性和多種程式設計範式。這就表示,Rust有關的知識範圍非常廣泛,涵蓋了物件導向、函數式、泛型、底層記憶體管理、類型系統、設計模式等知識。從底層到上層抽象,從模式到工程化穩固性,無所不包。可以說,Rust是程式語言發展至今的集大成者。
本書特色
◎設計哲學:探索Rust語言的內在一致性。了解Rust語言的設計哲學,有助把握Rust語言的核心與一致性,把Rust看似紛繁複雜的特性都系統地串起來。
◎原始程式:Rust是一種自舉的語言,Rust語言由Rust本身實現。透過閱讀Rust標準函數庫和一些協力廠商函數庫的原始程式,不僅可以深入了解Rust提供的資料類型和資料結構,更能體驗和學習道地的Rust程式設計風格。
◎工程角度:Rust透過類型系統、斷言、錯誤處理等機制保障記憶體安全的同時,還確保了系統的穩固性。
◎底層原理:探索Rust記憶體安全的本質,可以進一步了解Rust的類型系統,以及UnsafeRust存在的必要性。
作者
張漢東
資深軟體工程師、企業獨立諮詢師、技術類圖書作者、譯者。愛好讀書、寫作,喜歡研究技術、學習之道,以及心智和認知開發模式。
活躍於電商、社交遊戲、廣告和眾籌領域。曾為思科、平安科技和閃迪等公司提供諮詢服務。目前在心智教育及創客領域開疆拓土。
《RubyUnderaMicroscope》Ruby原理剖析一書的譯者。為Rust語言提交了三次編譯器Bug,並協助修復其中之一。為官方Rust2018Guide做過貢獻,並數次提出改進意見,參與中國Rust社區的管理和運營。
2018年打造《Rust每日新聞》頻道,深受Rustacean們的喜愛。為初學者精心打造Rust必學第一課:知乎Live《如何系統地學習Rust語言》,獲得五星好評。
目錄
01 新時代的語言
1.1 緣起
1.2 設計哲學
1.3 現狀與未來
1.4 Rust 程式如何執行
1.5 小結
02 語言精要
2.1 Rust 語言的基本組成
2.2 敘述與運算式
2.3 變數與綁定
2.4 函數與閉包
2.5 流程控制
2.6 基底資料型態
2.7 複合資料類型
2.8 常用集合類型
2.9 智慧指標
2.10 泛型和 trait
2.11 錯誤處理
2.12 運算式優先順序
2.13 註釋與列印
2.14 小結
03 類型系統
3.1 通用概念
3.2 Rust 類型系統概述
3.3 泛型
3.4 深入 trait
3.5 類型轉換
3.6 目前 trait 系統的不足
3.7 小結
04 記憶體管理
4.1 通用概念
4.2 Rust 中的資源管理
4.3 小結
05 所有權系統
5.1 通用概念
5.2 所有權機制
5.3 綁定、作用域和生命週期
5.4 所有權借用
5.5 生命週期參數
5.6 智慧指標與所有權
5.7 平行處理安全與所有權
5.8 非詞法作用域生命週期
5.9 小結
06 函數、閉包與反覆運算器
6.1 函數
6.2 閉包
6.3 反覆運算器
6.4 小結變數類別
07 結構化程式設計
7.1 物件導向風格程式設計
7.2 常用設計模式
7.3 小結
08 字串與集合類型
8.1 字串
8.2 集合類型
8.3 了解容量
8.4 小結
09 建置穩固的程式
9.1 通用概念
9.2 消除失敗
9.3 分層處理錯誤
9.4 恐慌(Panic)
9.5 協力廠商函數庫
9.6 小結
10 模組化程式設計
10.1 套件管理
10.2 模組系統
10.3 從零開始實現一個完整功能套件
10.4 可見性和私有性
10.5 小結
11 安全平行處理
11.1 通用概念
11.2 多執行緒平行處理程式設計
11.3 非同步平行處理
11.4 資料平行
11.5 小結
12 元程式設計
12.1 反射
12.2 巨集系統
12.3 編譯器外掛程式
12.4 小結
13 超越安全的邊界
13.1 Unsafe Rust 介紹
13.2 基於 Unsafe 進行安全抽象
13.3 和其他語言互動
13.4 Rust 與 WebAssembly
13.5 小結
A Rust 開發環境指南
A.1 無須安裝環境也可以玩轉 Rust
A.2 在本機安裝 Rust
A.3 在 Docker 中使用 Rust
A.4 Rust IDE 或編輯器
A.5 開發依賴工具介紹
B Rust 如何偵錯程式
B.1 環境設定
B.2 偵錯程式
B.3 歸納14-1 PanedWindow
序/導讀
推薦序一
Even though I had to read this book through Google Translate, The Tao of Rust is an extremely interesting book. It starts off explaining exactly why it is different: it's a book that gets you to think about Rust, and its perspective on the world. I only wish I could read it in its native tounge, as I'm sure it's even better then! I have been working on Rust for six years now, and this book changed my perspective on some aspects of the language. That's very powerful!
即使我不得不透過Google 翻譯閱讀這本書,但也不難發現這是一本非常有趣的 書。它解釋了Rust 為何與眾不同:這本書可以讓你思考Rust,以及Rust 語言所 蘊含的世界觀。我好希望能讀懂中文原版書,因為我相信它會更精彩!我已經 從事Rust 的相關工作六年了,這本書改變了我對Rust 語言的某些看法。非常強 大!
—Steve Klabnik,Rust 官方核心團隊成員及文件團隊前負責人
推薦序二
I knew Rust was a notoriously difficult programming language to learn, but it wasn't until I read the preface to The Tao of Rust, by Alex Zhang, that I realized why it is so difficult. Alex writes: Rust covers a wide range of knowledge, including object-oriented, functional programming, generics, underlying memory management, type systems, design patterns, and more. Alex covers all of these topics and more in The Tao of Rust. A single text that ties all of this together will be invaluable for Rust learners. So far I've read a couple of chapters translated from the original Chinese, and I can't wait to read more.
Rust 語言難學,這已經是眾所皆知的了。但是直到我看到 Alex(張漢東)的前言 時,我才明白它為什麼如此難學,Alex 寫道: 「Rust 有關的知識範圍非常廣泛,涵蓋了物件導向、函數式、泛型、底層記憶體 管理、類型系統、設計模式等知識。」
本書涵蓋了所有這些主題和內容,並且將這些內容有機地聯繫在一起,這對Rust 的學習者來說是非常寶貴的。我閱讀了本書部分內容的英文譯稿後,就已經迫不 及待地想要閱讀更多的內容了。
—Patrick Shaughnessy,《 Ruby 原理剖析》原著作者