本書github鏈接:inside-rust-std-library
對RUST的興趣來自于一則新聞報道——Linus認真考慮將RUST作為Linux內(nèi)核開發(fā)語言。因此開始了對RUST探索缴罗,不久后基本上就從心底里認同了這門語言绩蜻,RUST不僅是高性能及安全的語言哺壶,它的語法設(shè)計也會帶來更合理的代碼架構(gòu)问慎,即使是對于初學(xué)者。而后一點實際上是以類為基礎(chǔ)的編程語言想解決但效果不彰的段直。相比于它帶來的好處寓落,所有權(quán),借用在跳,生命周期等帶來的復(fù)雜性僅僅是一個訓(xùn)練和習(xí)慣的過程而已枪萄。 但這個訓(xùn)練和習(xí)慣的過程僅僅靠學(xué)習(xí)各種書籍,指南硬毕,文檔顯然是無法達成的呻引,代碼的訓(xùn)練和研究必不可少。在做了一些表層語法的訓(xùn)練之后吐咳,就需要做一些復(fù)雜模塊的代碼研究了逻悠。
RUST標準庫顯然是一個合適的研究對象元践。(標準庫代碼就在rust安裝目錄下),vscode+rust插件是一個合適的閱讀代碼的IDE童谒。?
資深C程序員都理解单旁,C語言核心的關(guān)鍵就是徹底的了解內(nèi)存和指針,作為和C地位等同的系統(tǒng)級變成語言饥伊,RUST的核心關(guān)鍵實際上也類似象浑。但RUST各種書籍和學(xué)習(xí)資料中,對指針的解釋基本沒有觸及根本琅豆。標準庫代碼則揭示了指針的所有秘密:原生指針的結(jié)構(gòu)體類型愉豺?內(nèi)存的申請與釋放?不同類型的原生指針如何相互轉(zhuǎn)換茫因?... 蚪拦。實際上,了解了RUST的內(nèi)存和原生指針冻押,那就解決了RUST大部分的理解難點驰贷,剩下的只是概念理解和工作量。 RUST的運算符重載是RUST的另一個核心點洛巢。數(shù)學(xué)運算/位運算/關(guān)系運算/邏輯運算的重載易于理解括袒。但下標運算符[],范圍(Range)運算符`../start..end/start..=end/start../..end/..=end`稿茉,問號運算符锹锰?,解引用運算符(*)就要深入代碼才能掌握漓库。 迭代器Iterator可視作語言循環(huán)結(jié)構(gòu)的一部分城须,RUST的基礎(chǔ)類型數(shù)組,切片米苹,字符串對Iterator的實現(xiàn)是學(xué)習(xí)RUST的代碼技巧不可放過的糕伐。 Option/Result是RUST的一大創(chuàng)舉,這兩個類型使得程序員的疏忽大意和思慮不周再沒有用武之地蘸嘶。Option/Result結(jié)構(gòu)體的行為也是RUST的函數(shù)式編程的基礎(chǔ)設(shè)施良瞧。 在RUST智能指針系列結(jié)構(gòu)中,Box是內(nèi)存申請的基礎(chǔ)训唱,Box的代碼是理解RUST的堆內(nèi)存操作的關(guān)鍵褥蚯。 還有Vec,String况增,Rc赞庶,Cell,Cow,RefCell歧强,Arc等等澜薄,這里不再一一例舉,本書會逐一分析其源碼摊册,揭示其秘密肤京。 對RUST標準庫的代碼進行研究是一件很辛苦,很有樂趣的工作茅特。最有趣和最辛苦的就是碰到一個新的類型忘分,新的Trait的時候。往往在“為什么有這個結(jié)構(gòu)類型和Trait”的思考和探索中白修,一兩個小時就過去了妒峦。而后豁然開朗,擊節(jié)贊嘆兵睛。RUST也隨著這些研究和探索舟山,由仙界墮入凡塵。?
本書將把這段研究RUST標準庫的過程和結(jié)果進行揭示卤恳。 RUST現(xiàn)在雖然還泯然眾人,但估計不久之后將脫穎而出寒矿,而能否熟練的用RUST編寫程序很可能成為評判優(yōu)秀程序員的一個標準突琳。希望這本書能夠幫助大家更好的掌握這門語言。