Rust相關(guān)介紹
為什么要用Rust?
為什么要用Rust?
- Rust是一種通用的編程語(yǔ)言,它可以讓每個(gè)人編寫(xiě)可靠且高效的軟件。
- Rust可以用來(lái)替換C/C++,Rust和它們具有同樣的性能,但是很多常見(jiàn)的bug在編譯時(shí)就可以被消滅。
與其他語(yǔ)言比較
- C/C++性能非常好,但類(lèi)型系統(tǒng)和內(nèi)存都不太安全。
- Java和C#,擁有垃圾收集器GC,能保證內(nèi)存安全,也有很多優(yōu)秀特性,但是性能不行。
- Rust能夠保證內(nèi)存安全(無(wú)需GC),并且易于維護(hù)、調(diào)試,代碼既安全又高效。
Rust的優(yōu)點(diǎn)
Rust的優(yōu)點(diǎn):
- 性能好,速度快。
- 安全性高。
- 具備出色的并發(fā)處理能力。
注:Rust最大的缺點(diǎn)就是難學(xué),因?yàn)?span id="n5n3t3z" class="token class-name">Rust中有很多獨(dú)有的概念,和現(xiàn)在大多數(shù)主流的編程語(yǔ)言都不同,所以學(xué)習(xí)Rust必須從基礎(chǔ)一步一步學(xué)。
Rust的用戶(hù)和案例
Rust的用戶(hù)和案例
- Google:新操作系統(tǒng)Fuschia,其中Rust代碼量大約占30%。
- Amazon(亞馬遜):基于Linux開(kāi)發(fā)的可以直接在裸機(jī)、虛機(jī)上運(yùn)行容器的操作系統(tǒng)。
- System76:純Rust開(kāi)發(fā)了下一代安全操作系統(tǒng)Redox。
- 螞蟻金服:用Rust開(kāi)發(fā)了庫(kù)操作系統(tǒng)Occlum。
- 斯坦福和密歇根大學(xué):嵌入式實(shí)時(shí)操作系統(tǒng),應(yīng)用于Google的加密產(chǎn)品。
- 微軟:正在使用Rust重寫(xiě)Windows系統(tǒng)中的一些低級(jí)組件,微軟的WinRT項(xiàng)目也新添加了對(duì)Rust語(yǔ)言的支持。
- 其他公司:Dropbox、Yelp、Coursera、LINE、Cloudflare、Atlassian、npm、Ceph、百度、華為、Sentry、Deno等。
Rust與Firefox
- Rust最初是Mozilla公司的一個(gè)研究性項(xiàng)目,F(xiàn)irefox是Rust產(chǎn)品應(yīng)用的一個(gè)重要的例子。
- Mozilla一直以來(lái)都在用Rust創(chuàng)建一個(gè)名為Servo的實(shí)驗(yàn)性瀏覽器引擎,其中的所有內(nèi)容都是并行執(zhí)行的,F(xiàn)irefox原來(lái)的量子版就包含了Servo的CSS渲染引擎。
Rust特別擅長(zhǎng)的領(lǐng)域
- 高性能Web Service。
- WebAssembly。
- 命令行工具。
- 網(wǎng)絡(luò)編程。
- 嵌入式設(shè)備。
- 系統(tǒng)編程。
開(kāi)發(fā)環(huán)境準(zhǔn)備
安裝Rust
安裝Rust
Linux/Mac操作系統(tǒng)執(zhí)行如下命令進(jìn)行安裝:
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
Windows操作系統(tǒng)的安裝步驟如下:
1、進(jìn)入Rust官網(wǎng),點(diǎn)擊install按鈕。如下:
2、根據(jù)操作系統(tǒng)的類(lèi)型點(diǎn)擊對(duì)應(yīng)的32位或64位下載按鈕。如下:
3、下載完后運(yùn)行可執(zhí)行程序可以看到如下內(nèi)容:
相關(guān)解釋?zhuān)?/strong>
- 安裝Rust后,Cargo的家目錄被設(shè)置為
用戶(hù)家目錄\.cargo
。 - 安裝Rust的時(shí)候會(huì)下載一些命令,這些命令對(duì)應(yīng)的可執(zhí)行程序就會(huì)放在
用戶(hù)家目錄\.cargo\bin
路徑下。 - 安裝Rust后,
用戶(hù)家目錄\.cargo\bin
將會(huì)被添加到PATH環(huán)境變量中(運(yùn)行Rust相關(guān)命令時(shí)不用指明路徑)。
4、點(diǎn)擊回車(chē)開(kāi)始下載,下載完畢后再次點(diǎn)擊回車(chē)。如下:
注意: 安裝完畢后需要重啟當(dāng)前的命令行終端,使得用戶(hù)家目錄\.cargo\bin
被添加到PATH環(huán)境變量中,以便直接在命令行中運(yùn)行rust相關(guān)命令。
安裝驗(yàn)證
可以通過(guò)如下命令確保Rust安裝成功:
rustc --version
該命令將會(huì)輸出當(dāng)前安裝的Rust編譯器(rustc)的版本信息。如下:
說(shuō)明一下:
- 圖中的1.73.0、cc66ad468和2023-10-03,分別是版本號(hào)、commit hash和commit日期。
更新與卸載Rust
更新與卸載Rust
更新Rust執(zhí)行如下命令:
rustup update
卸載Rust執(zhí)行如下命令:
rustup self uninstall
開(kāi)發(fā)工具
開(kāi)發(fā)工具
Rust常用的開(kāi)發(fā)工具如下:
- Visual Studio Code(Rust擴(kuò)展)。
- Clion(IntelliJ IDEA系列)。
在這些開(kāi)發(fā)工具上下載對(duì)應(yīng)的Rust插件即可進(jìn)行Rust開(kāi)發(fā)。如下:
本地文檔
安裝Rust的時(shí)候會(huì)在本地安裝文檔,可離線瀏覽,通過(guò)rustup doc命令即可在瀏覽器打開(kāi)本地文檔。如下:
Hello World程序
編寫(xiě)Rust程序
編寫(xiě)Rust程序
創(chuàng)建一個(gè)名為main.rs的文件,并編寫(xiě)如下內(nèi)容:
fn main() {
println!("Hello World");
}
相關(guān)說(shuō)明:
- Rust源文件以小寫(xiě)字母命名,多個(gè)單詞之間使用下劃線分開(kāi),文件以rs為后綴。
- 代碼中通過(guò)fn關(guān)鍵字定義了一個(gè)main函數(shù),該函數(shù)沒(méi)有參數(shù)也沒(méi)有返回值。
- 打印字符串時(shí)使用的
println!
不是函數(shù),而是一個(gè)Rust macro(宏)。 - Rust的縮進(jìn)是4個(gè)空格,而不是一個(gè)制表符。
- Rust中的表達(dá)式以分號(hào)結(jié)尾。
編譯與運(yùn)行Rust程序
編譯Rust程序
通過(guò)rustc命令即可對(duì)指定的Rust程序進(jìn)行編譯,并生成可執(zhí)行程序。如下
說(shuō)明一下:
- Rust是ahead-of-time編程語(yǔ)言,程序編譯生成可執(zhí)行程序后可在無(wú)Rust環(huán)境的機(jī)器上運(yùn)行。
- Windows下生成的可執(zhí)行程序名為xxx.exe,Linux/Mac下生成的可執(zhí)行程序名為xxx。
- Windows上還會(huì)生成一個(gè)xxx.pdb文件,里面包含的是調(diào)試信息。
運(yùn)行Rust程序
執(zhí)行可執(zhí)行程序即可運(yùn)行Rust程序。如下:
說(shuō)明一下:
- rustc只適合編譯簡(jiǎn)單的Rust程序,實(shí)際開(kāi)發(fā)中一般會(huì)使用Cargo。
Cargo工具
Cargo工具
- Cargo是Rust的官方構(gòu)建系統(tǒng)和包管理器,它是Rust生態(tài)系統(tǒng)中用于構(gòu)建、測(cè)試、運(yùn)行和發(fā)布Rust項(xiàng)目的工具。
- Cargo提供了一種簡(jiǎn)單而強(qiáng)大的方式來(lái)管理Rust項(xiàng)目的依賴(lài)關(guān)系、構(gòu)建過(guò)程和發(fā)布版本,它可以自動(dòng)下載和安裝所需的依賴(lài)項(xiàng),編譯源代碼,運(yùn)行測(cè)試套件,生成文檔,并生成可執(zhí)行文件或庫(kù)。
在安裝Rust的時(shí)候會(huì)自動(dòng)安裝Cargo工具,通過(guò)cargo --version
命令可以查看Cargo的版本。如下:
Cargo創(chuàng)建項(xiàng)目
Cargo創(chuàng)建項(xiàng)目
創(chuàng)建Rust項(xiàng)目的命令如下:
cargo new 項(xiàng)目名稱(chēng)
該命令會(huì)在當(dāng)前目錄下創(chuàng)建一個(gè)項(xiàng)目目錄,項(xiàng)目目錄的名字與指定的項(xiàng)目名稱(chēng)相同。如下:
在項(xiàng)目的頂層目錄下一個(gè)src目錄、一個(gè).gitignore文件和一個(gè)Cargo.toml文件。如下:
說(shuō)明一下:
- 在src目錄下有一個(gè)main.rs源文件,該源文件中會(huì)自動(dòng)生成Hello World程序,Rust項(xiàng)目的源代碼都應(yīng)該放在src目錄下。
- 頂層目錄可以放置README、許可信息、配置文件以及其他與程序源碼無(wú)關(guān)的文件。
- Cargo會(huì)在項(xiàng)目目錄初始化一個(gè)git倉(cāng)庫(kù),以及一個(gè).gitignore文件,如果在一個(gè)已經(jīng)存在的git倉(cāng)庫(kù)中運(yùn)行cargo new,則這些git相關(guān)文件則不會(huì)生成,這時(shí)可以通過(guò)運(yùn)行
cargo new 項(xiàng)目名稱(chēng) --vcs=git
指定讓Cargo在項(xiàng)目目錄初始化一個(gè)git倉(cāng)庫(kù)。 - 如果創(chuàng)建項(xiàng)目時(shí)沒(méi)有使用Cargo,后續(xù)也可以把項(xiàng)目轉(zhuǎn)化為使用Cargo,只需要按照上述目錄結(jié)構(gòu)組織項(xiàng)目代碼,并將相應(yīng)的配置信息寫(xiě)入Cargo.toml即可。
Cargo.toml
- Cargo.toml是Rust項(xiàng)目中的一個(gè)配置文件,它位于項(xiàng)目頂層目錄下,用于描述項(xiàng)目的元數(shù)據(jù)和依賴(lài)關(guān)系。
- Cargo.toml文件采用TOML(Tom’s Obvious, Minimal Language)格式,這是一種易于閱讀和編寫(xiě)的配置文件語(yǔ)言,它允許你指定項(xiàng)目的名稱(chēng)、版本號(hào)、作者、許可證等元數(shù)據(jù)信息,并列出項(xiàng)目所依賴(lài)的外部庫(kù)或其他Rust包。
使用Cargo工具創(chuàng)建項(xiàng)目時(shí)默認(rèn)生成的Cargo.toml文件如下:
[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
說(shuō)明一下:
- [package]是一個(gè)片段(section)標(biāo)題,表明下面的語(yǔ)句用來(lái)配置一個(gè)包(package)。
- 代碼中的name、version和edition分別表示項(xiàng)目名、項(xiàng)目版本和使用的Rust版本。
- [dependencies]是羅列項(xiàng)目依賴(lài)的片段的開(kāi)始,Rust中代碼包稱(chēng)為crate,當(dāng)前項(xiàng)目不需要其他的crate。
Cargo構(gòu)建項(xiàng)目
Cargo構(gòu)建項(xiàng)目
構(gòu)建Rust項(xiàng)目的命令如下:
cargo build
該命令會(huì)編譯項(xiàng)目代碼,并在項(xiàng)目目錄/target/debug/
目錄下生成可執(zhí)行程序。如下:
說(shuō)明一下:
- 第一次運(yùn)行cargo build會(huì)在項(xiàng)目頂層目錄下生成Cargo.lock文件,該文件負(fù)責(zé)追蹤項(xiàng)目依賴(lài)的精確版本,一般情況下不需要手動(dòng)修改文件內(nèi)容。
Cargo構(gòu)建并運(yùn)行項(xiàng)目
Cargo構(gòu)建并運(yùn)行項(xiàng)目
構(gòu)建并運(yùn)行Rust項(xiàng)目的命令如下:
cargo run
該命令會(huì)編譯項(xiàng)目代碼生成可執(zhí)行程序,并自動(dòng)執(zhí)行可執(zhí)行程序。如下:
如果之前編譯成功過(guò),并且源代碼沒(méi)有改變,那么執(zhí)行cargo run就會(huì)直接運(yùn)行可執(zhí)行程序。如下:
Cargo檢查項(xiàng)目
Cargo檢查項(xiàng)目
檢查Rust項(xiàng)目的命令如下:
cargo check
- 該命令會(huì)檢查項(xiàng)目代碼,確保代碼能夠通過(guò)編譯,但不會(huì)產(chǎn)生任何可執(zhí)行文件。
- cargo check比cargo build快得多,開(kāi)發(fā)者在編寫(xiě)程序的過(guò)程中會(huì)反復(fù)調(diào)用cargo check,以保證自己寫(xiě)的代碼可以通過(guò)編譯,只有在真正需要生成可執(zhí)行程序的時(shí)候才會(huì)調(diào)用cargo build或cargo run。
如果將Hello World程序中的英文分號(hào)換成中文分號(hào),那么在cargo check時(shí)就會(huì)發(fā)現(xiàn)錯(cuò)誤。如下:
Cargo為發(fā)布構(gòu)建項(xiàng)目
Cargo為發(fā)布構(gòu)建項(xiàng)目
為發(fā)布構(gòu)建Rust項(xiàng)目的命令如下:
cargo build --release
該命令會(huì)在編譯代碼時(shí)會(huì)進(jìn)行優(yōu)化,以保證編譯出來(lái)的代碼會(huì)運(yùn)行得更快。如下:
需要注意的是,為發(fā)布構(gòu)建Rust項(xiàng)目生成的可執(zhí)行程序在項(xiàng)目目錄/target/release/
目錄下。如下:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-716214.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-716214.html
到了這里,關(guān)于Rust入門(mén)基礎(chǔ)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!