感覺rust詞彙中的「借用」這個詞不是十分合適,因為想象力可能認為「借用」的物品通常是一種體積小於人質量輕便的東西,就像借用一本書,畫面是書從乙個人的手中交到了另乙個人的手中,書移動了。但是rust中的借用很明顯是借用的堆中的記憶體空間的進出權,記憶體並未移動。應該有乙個更合適的詞彙體現出不移動的記憶體和移動的書這兩種不同的場景,只是我還不知道這個詞彙是什麼?最合適的詞彙應該是表達的是「授權通行」這種意思。
當初函式引數(a: &int)的本意就是讓行走進這個函式空間(作用域)的主體(主體是有主觀能動性的行走者或者叫執行緒,客體就是那些不動的記憶體空間們)有權訪問外層空間(作用域)中的a客體的意思,只不過實現中通常被用指標實現的引用邏輯,但通過控制作用域中的客體的訪問許可權實現才是最初的本意只不過這不高效而且複雜。 追本溯源我們發現rust中的move也是乙個不良詞彙,計算機的執行景象中從來就不曾存在過move。也不能說執行景象中不存在move,是存在的,move是主體(執行緒)的行為,表達的是當前空間(記憶體空間、暫存器空間等空間)的哪個位置在變化的意思,**在變化的意思就是主體行走到了**。
主體行走到了空間的某個位置,他可能只是行走也可能操作當地的狀態將當地的0扳動成1,這個0到1的變遷就是move,畢竟時空是一體的,時間表達的是空間的變,01變遷就是空間的變,從這個角度看空間變了,不變的是空間的容量不變,變化的是空間的震動位置在變。容量不變和能量守恆一定只是對同一件事情的不同表達,只不過是詞彙不同。
rust的詞彙系統已經很好了,但也不理想。
找到合適的詞彙了,函式f(a: &int)中的引數a &int的意思是「位置」,就叫位置,不叫借用,&int叫「某個解釋為int的記憶體位置」和&a叫「定位a的位置」概念一致。因為在底層根本不存在許可權,許可權是上層的概念,就像作業系統保護了某段記憶體用於自己訪問不允許別人訪問一樣在作業系統層次有許可權概念,在更上層有許可權概念,但在更下層根本不存在許可權概念,只存在位置概念。所以號稱用來寫作業系統的程式語言都不能有許可權概念只能有位置概念。f(a: &int)中的引數a &int的唯一意思是傳入乙個解釋為int的記憶體段的位置別無他意,只要給與位置和含義就行了根本沒有許可權概念更沒有所有權概念。&的本來意思就是「取址」,&int當然指的是位置,一直良好一直一致,從來不存在move和bowrring概念。
本文標題說rust的詞彙系統依舊不夠良好,意思中有c/c++的詞彙系統也不良好的意思f(int& a)中的int&叫位置不叫引用。
rust的綠卡 rust中的Pin詳解
rust中的pin詳解 相關概念 pin這是乙個struct,作用就是將p所指向的t在記憶體中固定住,不能移動。說白一些,就是不能通過safe 拿到 mut t。pin定義如下 pub struct pin pointer p,unpin 這是乙個trait,定義在std marker中,如果乙個t...
rust 1 34 Rust 1 43的新功能
rust 1.34 與c,c go和您可能使用的其他語言相比,rust程式語言的獨特方法可產生更好的 並減少妥協。它還定期 每月 定期更新。如果您已經通過rustup安裝了先前版本的rust,則可以通過以下命令訪問最新版本 rustup update stable 快速開始使用旨在建立快速的系統級軟...
rust巨集的復用
由於這一部分別人已經寫過就不多贅述,放個鏈結 假如我們在crate中想要寫乙個巨集,為了美觀將其單獨放在了乙個檔案中,假設叫macros.rs,如下圖所示 如果我們想在同一層級的node.rs中使用這個巨集,那麼需要做的就是在這個巨集前加上 macro export 並且在lib.rs中新增 mac...