? ? ? ?在上一期視頻里我們使用 cargo run 運(yùn)行了個(gè) helloworld ,在 hello-rust 目錄里再次運(yùn)行 tree 命令:

? ? ? 我們發(fā)現(xiàn)在 hello-rust 目錄下多了一個(gè) Cargo.lock 文件和一個(gè) target 文件夾。Cargo.lock 文件用于記錄鎖定我們當(dāng)前項(xiàng)目依賴的庫(kù)版本號(hào),什么意思呢?
? ? ? ?比如我們項(xiàng)目現(xiàn)在依賴一個(gè)庫(kù) L,L 庫(kù)有倆個(gè)版本 1.1 和 1.2 , 我們?cè)?Cargo.toml 文件里配置了我們的項(xiàng)目依賴 1 版本 , 并沒(méi)有明確指定是 1.1還是 1.2, 這個(gè)時(shí)候 Cargo 幫我們下載了 1.2 并記錄到 Cargo.lock 文件中,以后再編譯這個(gè)項(xiàng)目的時(shí)候就優(yōu)先使用 Cargo.lock 里記錄的版本,這么做有什么好處呢?
? ? ? ?這樣可以避免不同版本間不兼容問(wèn)題,比如L庫(kù)又推出了庫(kù)又推出了 1.3 版本,但這個(gè)版本修改了一些功能跟1 .2 版本的使用方法已經(jīng)不一樣了,這個(gè)時(shí)候如果沒(méi)有 Cargo.lock 文件, Cargo 很可能就會(huì)去下載1 .3 版本使用,但我們的程序是按照1 .2 編寫的,這個(gè)時(shí)候程序編譯就會(huì)有問(wèn)題了,有了 Cargo.lock 就可以避免出現(xiàn)這樣的情況。這個(gè)跟前端的包管理工具 yarn 生成的 yarn.lock 文件類似。
? ? ? ? target 文件夾里是 cargo 用來(lái)存放編譯時(shí)產(chǎn)生的中間結(jié)果和可執(zhí)行文件的,由 cargo 自己管理我們不用太在意,知道在這里能找到我們 cargo 編譯好的可執(zhí)行文件就好了,這里的可執(zhí)行文件名稱跟我們的項(xiàng)目名稱一樣也叫 hello-rust, 有同學(xué)可能會(huì)問(wèn), cargo 怎么知道我們的項(xiàng)目叫 hello-rust 呢,如果我想再小激動(dòng)一把讓它生成的可執(zhí)行文件叫 hello-tianlangstuido 咋辦呢?
? ? ? ? 這里我們可以看下 Cargo.toml 的內(nèi)容:

? ? ? ? ?package 區(qū)域的 name 項(xiàng)用于設(shè)定我們當(dāng)前的項(xiàng)目名稱也就是生成的可執(zhí)行文件的名稱,把這里的 hello-rust 改成 hello-tianlangstuido, 生成的可執(zhí)行文件就叫 hello-tianlangstudio 了, name 配置項(xiàng)下面的version 用于配置我們項(xiàng)目的版本號(hào),這個(gè)我們可以根據(jù)項(xiàng)目功能完成情況自己指定,再下面的 authors配置項(xiàng)用于配置開(kāi)發(fā)者信息,你可以寫上自己的名字或聯(lián)系方式、github 賬號(hào)郵箱什么的。再下面的 edition 用于指定當(dāng)前項(xiàng)目使用的 rust 版本這里就不能隨便改了,因?yàn)?rust 版本就倆個(gè),一個(gè)2015 ,一個(gè) 2018 。2018 版本是在 2015 版本的基礎(chǔ)上做了重新設(shè)計(jì)和功能改進(jìn),所以我們現(xiàn)在使用2018 版本。再下面的 dependencies 用于指定我們項(xiàng)目依賴的官方或第三方提供的 rust 庫(kù),我們當(dāng)前的項(xiàng)目沒(méi)有用到外部庫(kù)所以這里為空。
在上一期中我們還小激動(dòng)了一把,通過(guò)修改 main.rs 文件把我們的名字輸出到了命令終端上。

? ? ? ?像“ Hello,TianlangStudio !”這樣用雙引號(hào)括起來(lái)文本信息我們稱為字符串字面量。像這樣的字面量還有整數(shù)字面量(整數(shù)也就是不帶小數(shù)沒(méi)有小數(shù)點(diǎn)的數(shù)字如 1\2\3\4 )、浮點(diǎn)數(shù)字面量 ( 浮點(diǎn)數(shù)也就是帶小數(shù)點(diǎn)的數(shù)字如1.5/1.6) 、布爾字面量(布爾是英文 boolean 的音譯,代表 ture 或 false )、 字符字面量(是用單引號(hào)括起來(lái)的一個(gè)字符,如‘ A’’ ,‘ Z’’ ),這里要注意我們?cè)诰帉懘a中語(yǔ)法中所使用的標(biāo)點(diǎn)符號(hào)都是英文輸入法狀態(tài)的如果使用中文輸入法狀態(tài)的符號(hào)可能會(huì)報(bào)錯(cuò),中文狀態(tài)的標(biāo)點(diǎn)符號(hào)和英文狀態(tài)的是不一樣的,大家可以對(duì)比下。
? ? ? 我們通過(guò)修改 "Hello World" 為 "Hello,TianlangStudio!" 在命令終端輸出了"Hello,TianlangStudio!"?,大家應(yīng)該已經(jīng)注意到在我們的需求中只需要修改" world" 為" tianlangstuido" 而不需要修改前面的" Hello" ,當(dāng)前的做法我們很容易就會(huì)誤傷到 Hello 可能一不小心就修改成了 "Hell TianlangStudio"。那能不能把這個(gè)字符串需要修改的部分和不變的部分開(kāi)編寫呢?這樣我們就可以分開(kāi)修改了,以免傷及無(wú)辜。
我們可以把這個(gè)字符串的不用變的前半部分定義為一個(gè)常量就是它通常就是這個(gè)值所以叫常量,后半部分的 world 在我們的需求里是需要改變的,要改變?yōu)?“TianlangStudio” ,我們可以定義一個(gè)變量來(lái)存儲(chǔ)這樣經(jīng)常需要變化的值,在 rust 中使用 const 關(guān)鍵字定義常量 , 使用 let 關(guān)鍵字定義變量。
? ? ? ? 我們來(lái)修改下 main.rs定義一個(gè) HI常量并指定它的值為“ Hello”,定義一個(gè) name 變量并指定它的值為“ TianlangStudio”, 在 println 中我們就可以輸出 HI和 name 來(lái)達(dá)到輸出“Hello,TianlangStudio” 的目的。

? ? ? ? ?這里的 name 因?yàn)樗闹凳且粋€(gè)字符串字面量,我們就稱為字符串類型的變量,跟字面量一樣,變量的類型除了 字符串類型還有整數(shù)類型、浮點(diǎn)數(shù)類型、布爾類型、字符類型這樣的基本數(shù)據(jù)類型。
? ? ? ? ?這一期我們就先跟數(shù)據(jù)類型混個(gè)臉熟,如果在觀看中有什么問(wèn)題歡迎通過(guò)平臺(tái)給我們留言。
? ? ? ? 這里是一條 Stack Overflow2019 關(guān)于編程語(yǔ)言薪酬排行開(kāi)發(fā)者調(diào)查報(bào)告

? ? ? ? 我們可以看到在全球排行 Top10 里已經(jīng)出現(xiàn)了 Rust 的身影
? ? ? ? 相關(guān)視頻請(qǐng)?jiān)L問(wèn)