本書github鏈接:inside-rust-std-library
對RUST的興趣來自于一則新聞報道——Linus認真考慮將RUST作為Linux內(nèi)核開發(fā)語言。因此開始了對RUST探索,不久后基本上就從心底里認同了這門語言,RUST不僅是高性能及安全的語言,它的語法設計也會帶來更合理的代碼架構,即使是對于初學者。而后一點實際上是以類為基礎的編程語言想解決但效果不彰的。相比于它帶來的好處,所有權,借用,生命周期等帶來的復雜性僅僅是一個訓練和習慣的過程而已。 但這個訓練和習慣的過程僅僅靠學習各種書籍,指南,文檔顯然是無法達成的,代碼的訓練和研究必不可少。在做了一些表層語法的訓練之后,就需要做一些復雜模塊的代碼研究了。
RUST標準庫顯然是一個合適的研究對象。(標準庫代碼就在rust安裝目錄下),vscode+rust插件是一個合適的閱讀代碼的IDE。?
資深C程序員都理解,C語言核心的關鍵就是徹底的了解內(nèi)存和指針,作為和C地位等同的系統(tǒng)級變成語言,RUST的核心關鍵實際上也類似。但RUST各種書籍和學習資料中,對指針的解釋基本沒有觸及根本。標準庫代碼則揭示了指針的所有秘密:原生指針的結構體類型?內(nèi)存的申請與釋放?不同類型的原生指針如何相互轉(zhuǎn)換?... 。實際上,了解了RUST的內(nèi)存和原生指針,那就解決了RUST大部分的理解難點,剩下的只是概念理解和工作量。 RUST的運算符重載是RUST的另一個核心點。數(shù)學運算/位運算/關系運算/邏輯運算的重載易于理解。但下標運算符[],范圍(Range)運算符`../start..end/start..=end/start../..end/..=end`,問號運算符?,解引用運算符(*)就要深入代碼才能掌握。 迭代器Iterator可視作語言循環(huán)結構的一部分,RUST的基礎類型數(shù)組,切片,字符串對Iterator的實現(xiàn)是學習RUST的代碼技巧不可放過的。 Option/Result是RUST的一大創(chuàng)舉,這兩個類型使得程序員的疏忽大意和思慮不周再沒有用武之地。Option/Result結構體的行為也是RUST的函數(shù)式編程的基礎設施。 在RUST智能指針系列結構中,Box是內(nèi)存申請的基礎,Box的代碼是理解RUST的堆內(nèi)存操作的關鍵。 還有Vec,String,Rc,Cell,Cow,RefCell,Arc等等,這里不再一一例舉,本書會逐一分析其源碼,揭示其秘密。 對RUST標準庫的代碼進行研究是一件很辛苦,很有樂趣的工作。最有趣和最辛苦的就是碰到一個新的類型,新的Trait的時候。往往在“為什么有這個結構類型和Trait”的思考和探索中,一兩個小時就過去了。而后豁然開朗,擊節(jié)贊嘆。RUST也隨著這些研究和探索,由仙界墮入凡塵。?
本書將把這段研究RUST標準庫的過程和結果進行揭示。 RUST現(xiàn)在雖然還泯然眾人,但估計不久之后將脫穎而出,而能否熟練的用RUST編寫程序很可能成為評判優(yōu)秀程序員的一個標準。希望這本書能夠幫助大家更好的掌握這門語言。