新聞中心
Rust 是最快風(fēng)靡開(kāi)發(fā)者和科技公司的系統(tǒng)編程語(yǔ)言之一。日常使用它的開(kāi)發(fā)者將其評(píng)為最受歡迎的編程語(yǔ)言之一,而它 ??已經(jīng)連續(xù)七年獲此殊榮了??!

它是如此的受歡迎,以致于現(xiàn)在有兩股巨大的推力將其帶入 Linux 生態(tài)系統(tǒng)中:
- ??將 Rust 作為 Linux 內(nèi)核的二級(jí)支持語(yǔ)言??
- System76 ??正在使用 Rust 重寫(xiě)他們自己的桌面環(huán)境??
而這還僅僅是在 Linux 生態(tài)系統(tǒng)中。安卓上的藍(lán)牙軟件 ??Gabeldorsche?? 現(xiàn)在也是由 Rust 編寫(xiě)的。
你是否也看到了 Rust 的流行趨勢(shì)?那么你或許也想學(xué)習(xí)使用 Rust 進(jìn)行編程。
為什么你要考慮 Rust 而不是其他編程語(yǔ)言?
首先,Rust 是一門(mén) 類(lèi)型安全的編程語(yǔ)言 并且 擁有極其嚴(yán)格的編譯期檢查。因此,你首先會(huì) “被迫” 寫(xiě)不出不安全的代碼(好吧,通常是這樣)。
Rust 編程語(yǔ)言有以下 “目標(biāo)”:
- 性能:Rust 的二進(jìn)制文件和 C 語(yǔ)言的二進(jìn)制文件一樣快,有時(shí)甚至超過(guò)了 C++ 的二進(jìn)制文件!
- 內(nèi)存安全:Rust 非常重視內(nèi)存安全。
- 并發(fā)性:對(duì)內(nèi)存安全的關(guān)注消除了很多類(lèi)似競(jìng)爭(zhēng)的情況,并幫助你在程序中無(wú)畏并發(fā)。
以下是在 C/C++ 等語(yǔ)言中可能犯的一些錯(cuò)誤(但 Rust 不會(huì)):
- 釋放后使用
- 雙重釋放
- 越界訪問(wèn)
- 使用 ?
?NULL?? - 不適當(dāng)?shù)闹羔樳\(yùn)算或訪問(wèn)
- 使用未經(jīng)初始化的變量
- 線(xiàn)程不安全的多線(xiàn)程
看看 ??蘋(píng)果??、??微軟??、??谷歌?? 等大公司因這類(lèi) ??0day?? 錯(cuò)誤而引起的問(wèn)題吧。
現(xiàn)在你可能知道了為什么要選擇 Rust 語(yǔ)言而不是其他編程語(yǔ)言,讓我們開(kāi)始學(xué)習(xí) Rust 語(yǔ)言的系列教程吧!
目標(biāo)受眾
出于對(duì) Rust 的熱愛(ài),我寫(xiě)了這個(gè)系列的 Rust 教程,幫助你熟悉 Rust 編程的概念。
這個(gè)教程系列是為已經(jīng)熟悉 C 和 C++ 等編程語(yǔ)言的人準(zhǔn)備的。我假設(shè)你已經(jīng)知道了 變量、函數(shù)、循環(huán) 等基本術(shù)語(yǔ)。
我對(duì)你的唯一要求是你不懈的堅(jiān)持與努力。
安裝 Rust 工具鏈
我希望你能在本地安裝 ??Rust 工具鏈??。你可以通過(guò)運(yùn)行以下命令來(lái)做到這一點(diǎn): (LCTT 譯注:如果你使用 Linux 發(fā)行版,請(qǐng)不要直接安裝軟件源里的 Rust 工具鏈,盡管這樣看起來(lái)很便捷。)
curl --proto '=https' --tlsv1.3 -sSf https://sh.rustup.rs | sh
Installing Rust on Ubuntu Linux
除了 Rust 基本工具鏈,我還建議再安裝一些工具,這些工具將在開(kāi)發(fā)過(guò)程中幫助你:
rustup component add rust-src rust-analyzer rust-analysis
你還需要 ??安裝 gcc??。否則,你可能會(huì)遇到“鏈接器 ??cc?? 未找到”的錯(cuò)誤。該軟件包在不同的發(fā)行版中都被稱(chēng)為 gcc。
在 Ubuntu 和 Debian 上使用:
sudo apt install gcc
如果你不希望在本地安裝 Rust 工具鏈,不用擔(dān)心。你還可以直接在你的瀏覽器中運(yùn)行 Rust 代碼!只要到 ??Rust 試驗(yàn)場(chǎng)?? 并把所討論的代碼粘貼在那里。
Hello Rust!
自從 丹尼斯·里奇Dennis Ritchie 和 布萊恩?柯林漢Brian Kernighan
因此,讓我們也用 Rust 編寫(xiě)我們的 Hello World 程序。
我將在我的家目錄里 ??新建一個(gè)項(xiàng)目目錄?? 叫做 ??learn-rust-its-foss??。然后,在這里我將新建一個(gè)叫 ??hello-world?? 的目錄。最后,在里面新建 ??main.rs?? 文件:
// 這串代碼將打印字符
// "Hello world!" 將被打印到 `標(biāo)準(zhǔn)輸出`
fn main() {
println!("Hello world!");
}
就像 C、C++ 和 Java 源代碼文件相應(yīng)的擴(kuò)展名是 ?
?.c??、??.cpp?? 和 ??.java??,Rust 的源文件擴(kuò)展名是 ??.rs??。
作為一個(gè) C/C++ 程序員,你可能已經(jīng)在 ??Linux 上使用 GCC??,在 macOS 上使用 ??Clang??,在 Windows 上使用 MSVC。但是為了編譯 Rust 代碼,該語(yǔ)言的創(chuàng)造者自己提供了一個(gè)官方的 ??rustc?? 編譯器。
運(yùn)行 Rust 程序和 ??執(zhí)行 C/C++ 程序?? 是一樣的。你首先編譯代碼,然后得到可執(zhí)行文件,最后再運(yùn)行這個(gè)可執(zhí)行文件從而來(lái)運(yùn)行代碼。
$ ls
main.rs
$ rustc main.rs
$ ls
main main.rs
$ ./main
Hello world!
很好!
解讀 Rust 代碼
現(xiàn)在你已經(jīng)編寫(xiě)、編譯并運(yùn)行了你的第一個(gè) Rust 程序,讓我們對(duì) “Hello World” 的代碼進(jìn)行解讀,并理解每一部分。
fn main() {
}??fn?? 關(guān)鍵字用來(lái)在 Rust 中聲明一個(gè)函數(shù)。在它后面 ??main?? 是這個(gè)被聲明函數(shù)的名字。像許多編譯型編程語(yǔ)言一樣,??main?? 是一個(gè)特殊的函數(shù),用來(lái)作為你的程序的入口。
任何寫(xiě)在 ??main?? 函數(shù)里的代碼(在大括號(hào) ??{?? ??}?? 之間)將在程序被啟動(dòng)時(shí)運(yùn)行。
println 宏
在 ??main?? 函數(shù)中, 有一個(gè)語(yǔ)句(LCTT 譯注:“語(yǔ)句” 區(qū)別于 “表達(dá)式”):
println!("Hello world!");就像 C 語(yǔ)言的標(biāo)準(zhǔn)庫(kù)有 ??printf?? 函數(shù)一樣,Rust 語(yǔ)言的標(biāo)準(zhǔn)庫(kù)有 ??println?? 宏。宏類(lèi)似于函數(shù),但它以感嘆號(hào)(??!??)來(lái)區(qū)分。你將在本系列的后面學(xué)習(xí)宏和函數(shù)的知識(shí)。
??println?? 宏接收一個(gè)格式化的字符串,并把它放到程序的標(biāo)準(zhǔn)輸出中(在我們的例子中,就是終端)。由于我希望輸出一些文本而不是一個(gè)變量,我將把文本放在雙引號(hào)(??"??)內(nèi)。最后,我用一個(gè)分號(hào)來(lái)結(jié)束這個(gè)語(yǔ)句,表示語(yǔ)句的結(jié)束。
你只需知道,任何看起來(lái)像函數(shù)調(diào)用但在開(kāi)頭括號(hào)前有感嘆號(hào)的東西,就是 Rust 編程語(yǔ)言中的一個(gè)宏。
注釋
Rust 遵循已知的 C 編程語(yǔ)言的注釋風(fēng)格。單行注釋以?xún)蓚€(gè)正斜杠(??//??)開(kāi)始,多行注釋以 ??/*?? 開(kāi)始,以 ??*/?? 結(jié)束。
// 這是一個(gè)多行注釋
// 但是沒(méi)有什么阻止你在
// 第二行或第三行也這樣寫(xiě)
/*
* 這是一個(gè)“真?多行注釋”
* 它看起來(lái)比較漂亮
*/
總結(jié)
你剛剛通過(guò) Hello World 程序邁出了用 Rust 寫(xiě)代碼的第一步。
作為一種練習(xí),也許你可以編寫(xiě)并執(zhí)行一個(gè)打印出 ??Yes! I did Rust?? 的 Rust 程序。
在本系列的下一部分中,你將學(xué)習(xí)在 Rust 程序中使用變量。敬請(qǐng)期待!
當(dāng)前文章:Rust基礎(chǔ)系列#1:創(chuàng)建并運(yùn)行你的首個(gè)Rust程序
文章起源:http://fisionsoft.com.cn/article/dpgdhge.html


咨詢(xún)
建站咨詢(xún)
