當前位置: 妍妍網 > 碼農

Rust記憶體安全的所有奧秘,都在這本書裏了!

2024-05-17碼農

--文末贈書--

我對Rust的興趣始於一個新聞:Linux Torvalds有意向將Rust作為Linux Kernel的開發語言(Linux Kernel 6.1已經正式被納入Rust)。

開始學習Rust後,我便立刻意識到 它對所有程式設計師的巨大價值。

Rust是較理想的程式語言,使用它開發的程式 在執行效率上不輸於其他任何高級程式語言。

同時,Rust是一門記憶體安全的語言,具有極高的生產力(掌握它之後),其語法會自然匯出良好的程式設計與架構。Rust的缺點也是顯而易見的,相比於其他語言,它明顯需要程式設計師花費更多的時間入門,這是因為Rust把程式世界的許多奧秘放在了入門階段。

如果能有一本書 透過對Rust標準庫原始碼系統的分析 ,幫助讀者理解標準庫所定義的型別、函式, 縮短讀者在Rust入門階段所花費的時間 ,那就再好不過了!

熟練掌握一門程式語言的最佳途徑就是深入分析、學習、理解優秀的程式碼。

Rust標準庫原始碼正是最理想的素材。

Rust標準庫具有完善的註釋,但這些註釋的目的是作為標準庫的指南,缺乏系統性及一些語言語法性質的內容,這促使了 【深入Rust標準庫:必備的Rust語言高級指南】 書的誕生。

本書疏理了標準庫原始碼的脈絡以便讀者學習及研究, 避免讀者在學習Rust時陷入一團混亂中。

本書對標準庫原始碼中與所有權、生命周期、記憶體安全相關的部份著重進行了註釋分析, 以加快讀者對這3個概念的理解。

本書還對每一個標準庫數據型別背後的需求及解決方案思路進行了探討,並針對Rust的某些設計理念、設計架構、設計思路進行了重點說明, 以便讀者理解Rust程式設計的思維和習慣。

目標讀者

本書不適合初學編程的讀者。

本書的最佳學習物件 是資深的、掌握了 Rust 初步語法的 C/C++ 程式設計師。

本書也適合 已經對 Rust 基礎語法比較熟悉的,希望對 Rust 有更深了解的,尤其是希望進行作業系統內核編程或通用框架編程的程式設計師。

對於資深的 Java Python Go 程式設計師 ,可以將本書作為與其他程式語言相比較的一個參考。

本書不是標準庫參考手冊,如需要參考手冊,請見【Rust標準庫參考手冊】。

內容脈絡

本書按如下脈絡對 Rust 標準庫進行分析。

Rust標準庫的目錄結構展示了其精細的模組化設計。CORE庫、ALLOC庫、STD庫的分工明晰且內聚,而Rust標準庫的概述包含了這些內容。

Rust具有一些自身的特征,包括泛型、記憶體安全框架、安全封裝型別、解封裝等,本書總結了這些特征。

程式設計師精通C語言的標誌是能熟練地使用指標。 Rust的裸指標是學習Rust最基礎、最核心的知識點之一。 本書將以裸指標為代表的記憶體模組作為代分碼析的起點, *const T *mut T MaybeUninit<T> ManuallyDrop<T> 有助於讀者理解所有權、生命周期、借用等,它們是非常重要的數據型別, 只有理解了這些型別,才能攻克 Rust 的難點。 Rust 提供了開放的介面以便程式設計師自行設計動態記憶體的申請與釋放機制,並使標準庫所有的動態記憶體都可以基於此機制。

透過對純量型別、切片型別、元組型別等基本型別的分析,就能看到Rust的基本型別可以利用特征語法無限擴充套件自身的行為,這展現了Rust更有表現力的語法功能。本書對基本型別做了分析。

Option<T>、Result<T,E>等型別完全由標準庫定義,而不是由編譯器支持的Rust基本型別定義,這一點可以從本書的原始碼分析中發現。

Marker Trait通常由編譯器實作,也是較難理解的語言特征。 因此,本書對Marker Trait進行了詳細的闡述。

標準庫除了加、減、乘、除及位運算,還包括下標運算、範圍運算、Try運算等,所有運算子都可以多載,且可以跨越型別多載,運算子多載揭示了Rust的很多編碼奧秘及技巧。

Iterator閉包是函數語言程式設計的基礎構架,Iterator介面卡構成了函數語言程式設計的基礎設施,標準庫完整地實作了這些內容,並且幾乎為每個型別都實作了叠代器,盡可能為函數語言程式設計做好準備。本書分析了所有基本型別的Iterator實作。

Cell<T>、RefCell<T>、Pin<T>、Lazy<T>程式碼闡釋了在Rust的基礎語法下,如何創造性地解決問題。

Rust標準庫其他智慧指標型別的堆記憶體申請及釋放基本都由Box<T>、RawVec<T>這兩個型別負責。

Rc<T>、Arc<T>是一個傑作,系統級的程式設計師會僅因為這兩個型別而喜歡上Rust。

Vec<T>、VecDeque<T>、LinkList<T>等智慧指標型別都可用於實作經典的數據結構範例。

標準庫對不同作業系統的適配能讓程式設計師不必像使用C/C++那樣重復耗費精力編寫程式碼,節省了編程時間,提高了工作效率。

Future、Poll、Waker與Context揭示了異步編程最基礎的思考和實作。

↑限時五折優惠↑

限時五折優惠,快快搶購吧!

↓Rust官方力薦好書↓

專屬五折優惠,快快搶購吧!

互動有獎

按以下方式與博文菌互動,即有機會獲贈圖書!

活動方式:在評論區留言參與「你如何看待Rust的學習」等話題互動,屆時會在參與的小夥伴中抽取2名幸運鵝贈送本期圖書一本!

說明:留言區收到回復「恭喜中獎」者將免費獲贈本圖書,中獎者請在收到通知的24小時內將您的「姓名+電話+快遞地址」留言至原評論下方處即可,私密資訊不會被放出,未在規定時間內回復視作自動放棄兌獎資格。

活動時間:截至5月20日開獎。

快快拉上你的小夥伴參與進來吧~~

溫馨提示可以將「Rust開發筆記」設為星標以免錯過贈書活動哦!