<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
國慶第一次學習,真是太罪惡了,555
主要還是看這個官網學的,這一部分對應的是官網上那個教學的第七章,寫的實在是讓人有點費解,所以我這邊自己寫一下,當然範圍限制在第七章,因為我暫時只是看到哪裡
Rust 語言是一種高效、可靠的通用高階語言。其高效不僅限於開發效率,它的執行效率也是令人稱讚的,是一種少有的兼顧開發效率和執行效率的語言。
Rust 語言由 Mozilla 開發,最早釋出於 2014 年 9 月。Rust 的編譯器是在 MIT License 和 Apache License 2.0 雙重協定宣告下的免費開源軟體。截至目前( 2020 年 1 月)最新的編譯器版本是 1.41.0。
高效能 - Rust 速度驚人且記憶體利用率極高。由於沒有執行時和垃圾回收,它能夠勝任對效能要求特別高的服務,可以在嵌入式裝置上執行,還能輕鬆和其他語言整合。
可靠性 - Rust 豐富的型別系統和所有權模型保證了記憶體安全和執行緒安全,讓您在編譯期就能夠消除各種各樣的錯誤。
生產力 - Rust 擁有出色的檔案、友好的編譯器和清晰的錯誤提示資訊, 還整合了一流的工具 —— 包管理器和構建工具, 智慧地自動補全和型別檢驗的多編輯器支援, 以及自動格式化程式碼等等。
Rust 語言可以用於開發:
書上給了很多概念啊,比如什麼crate,mod之類的,我這邊實際一點,寫一個叫school的包,這個包分成三個模組,分別是teacher、student、worker,最終我在main.rs當中要呼叫teacher包當中的一個函數,就這麼簡單,下面看一下我的結構
很簡單啊,src一個主要的main.rs,其他四個檔案都在school資料夾下面。
pub mod male_worker { pub fn male_worker_num() -> i32 { 8 } }
pub修飾符代表這個檔案是外部可存取的,mod實際上是建立了一個名稱空間,裡面隨便寫了個函數,返回了8,這個數位。這裡需要注意一下worker.rs本身就相當於一個同名的名稱空間,這一點在引入的時候會有體現。
pub fn student_num() -> i32 { // 代表我這裡是120個學生 120 }
挺簡單的,實際上就是在student mod之中建立一個公開的函數,返回一個值,還是要著重一下,student.rs本身就是一個同名mod
// 建立一個新的mod巢狀 pub mod female_student { pub fn female_student_num() -> i32 { 10 } } //嘗試一下引入我們的student模組 pub fn total() -> i32 { // 1.絕對路徑引入 這個路徑 let student_num1 = crate::school::student::student_num(); // 2.使用self進行相對路徑的引入 // 我們用self引入一下mod female_student的內容 let female_student = self::female_student::female_student_num(); //演示一下super的用法,super就是當前目錄的父親級別的目錄,也是就是self的父親級別 let student_num2 = super::student::student_num(); // 3.當引入路徑又臭又長的時候我們可以使用use關鍵詞,將最後一個模組直接作為包的名字 use crate::school::woker::male_worker; // use crate::school::worker::male_worker as 男性員工; // 上面是一個別名設定 // 這個male_worker就變成了這麼大一長串的別名 let male_worker_num = male_worker::male_worker_num(); let eqa = student_num1 == student_num2; println!("兩種測試方式取出的數是否相等:{}", eqa); student_num1 + student_num2 + female_student + male_worker_num }
比較長啊,實際上我用數位標了,整體上就是三個部分:
let student_num1 = crate::school::student::student_num();
這裡的絕對路徑不是我們一般的“/”,而是crate關鍵詞開頭,那麼這個crate具體指的是啥呢,其實,我認為就是src資料夾,這裡可以再看一下上面的專案結構,這裡是要取student(student.rs)模組之中的函數的返回值,當然要注意一點,中間間隔的這些名稱不是資料夾,而是模組。
let female_student = self::female_student::female_student_num(); //演示一下super的用法,super就是當前目錄的父親級別的目錄,也是就是self的父親級別 let student_num2 = super::student::student_num();
這裡是兩種情況,首先是self開頭的相對路徑,實際上就是指的本模組,請問根據上面的teacher.rs,這裡的self指的是誰?
再看一下檔案,teacher.rs實際上是由一個叫total的函數和模組female_student組成的,這個self在total函數中,當然指的是teacher這個模組啦,female_student是teacher的子模組,接下來就好理解了。
在第二種情況中,super指的就是當前self的父模組,實際就是school,實際使用上來看:mod申明的是個模組,rs檔案是個模組,school資料夾也是模組啦
use crate::school::woker::male_worker; // use crate::school::worker::male_worker as 男性員工; // 上面是一個別名設定 // 這個male_worker就變成了這麼大一長串的別名 let male_worker_num = male_worker::male_worker_num();
本質上就是這樣模組化的寫法太長,使用use將長串模組的最後一個名稱作為整體的名稱,當然也可以使用as的方式建立別名
main.rs拿到模組中的值
teacher.rs返回了一個i32的值,那這個值要怎麼拿到呢,看一下上面的專案結構,我們有一個mod.rs的檔案如下
pub mod student; pub mod teacher; pub mod woker;
這個資料夾的創立是為了申明school資料夾本身是個大模組,同時也是為了讓main.rs找到school模組,並使用裡面的函數,這裡的mod就不是申明模組了,而是引入模組。我們看一下main.rs如何引入
fn main() { // 嘗試一下引入函數 let total = school::teacher::total(); println!("{}", total); } mod school;
這裡也有一個mod school作用和上面一樣,引入已經申明的模組,執行一下也是成功的
總結一下就以下幾個問題:
1.哪些部分能叫模組(資料夾、rs檔案、檔案中的mod申明)
2.mod關鍵詞啥作用(檔案中申明模組,引入模組)
3.use和pub關鍵詞(縮短路徑,外部獲取)
4.相對和絕對路徑如何拿到模組中的值(self,super)
當然,初學還是有點不太懂的,當個建議記錄看看就行
到此這篇關於rust的模組引入的文章就介紹到這了,更多相關rust模組內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45