Rust
- Rust是什么?
- 安裝rust
- 在Linux或者Mac OS:
- 在Windows:
- 更新與卸載
- rust起步
- 寫我們的第一個程序,hello world
- cargo
- 使用cargo創建項目
- cargo基本命令
才來實習,由于部門使用的SDK是rust語言,所以先淺淺進行rust學習與記錄。
Rust是什么?
Rust 程序設計語言的本質實際在于
賦能(empowerment)
:無論你現在編寫的是何種代碼,Rust 能讓你在更為廣泛的編程領域走得更遠,寫出自信。(這一點并不顯而易見)
舉例來說,那些“系統層面”的工作涉及內存管理、數據表示和并發等底層細節。從傳統角度來看,這是一個神秘的編程領域,只為浸潤多年的極少數人所觸及,也只有他們能避開那些臭名昭著的陷阱。即使謹慎的實踐者,亦唯恐代碼出現漏洞、崩潰或損壞。
Rust 破除了這些障礙:它消除了舊的陷阱,并提供了伴你一路同行的友好、精良的工具。 想要 “深入” 底層控制的程序員可以使用 Rust,無需時刻擔心出現崩潰或安全漏洞,也無需因為工具鏈不靠譜而被迫去了解其中的細節。更妙的是,語言設計本身會自然而然地引導你編寫出可靠的代碼,并且運行速度和內存使用上都十分高效。
已經在從事編寫底層代碼的程序員可以使用 Rust 來提升信心。例如,在 Rust 中引入并行是相對低風險的操作,因為編譯器會替你找到經典的錯誤。同時你可以自信地采取更加激進的優化,而不會意外引入崩潰或漏洞。
但 Rust 并不局限于底層系統編程。它表達力強、寫起來舒適,讓人能夠輕松地編寫出命令行應用、網絡服務器等各種類型的代碼——在本書中就有這兩者的簡單示例。使用 Rust 能讓你把在一個領域中學習的技能延伸到另一個領域:你可以通過編寫網頁應用來學習 Rust,接著將同樣的技能應用到你的Raspberry Pi
(樹莓派)上。
本書全面介紹了 Rust 為用戶賦予的能力。其內容平易近人,致力于幫助你提升 Rust 的知識,并且提升你作為程序員整體的理解與自信。歡迎你加入 Rust 社區,讓我們準備深入學習 Rust 吧!
—— Nicholas Matsakis 和 Aaron Turon
rust相比起C/C++等傳統語言,擁有著卓越的、天生的內存安全性。相對于C#等帶有垃圾回收機制的語言來講,它遵循了零開銷抽象(Zero-Cost Abstraction)規則,并為開發者保留了最大的底層控制能力。rust是一種專注于安全、并發和性能的系統級編程語言。
安裝rust
本地安裝與文檔
在Linux或者Mac OS:
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
如果是安裝成功,會顯示信息:
Rust is installed now. Great!
另外,你還需要一個 鏈接器(linker),這是 Rust 用來將其編譯的輸出連接到一個文件中的程序。很可能你已經有一個了。如果你遇到了鏈接器錯誤,請嘗試安裝一個 C 編譯器,它通常包括一個鏈接器。C 編譯器也很有用,因為一些常見的 Rust 包依賴于 C 代碼,因此需要安裝一個 C 編譯器。
在 macOS 上,你可以通過運行以下命令獲得 C 語言編譯器:
xcode-select --install
直接復制輸入就好了。
在Windows:
在 Windows 上,前往 官方教程并按照說明安裝 Rust。
要獲取構建工具,你需要安裝 Visual Studio 2022。當被問及需要安裝什么工作負載(Workload)的時候,請確保勾選了以下內容:
“使用 C++ 的桌面開發”(“Desktop Development with C++”)
Windows 10(或 11)SDK
英語語言包,以及其他你所需要的語言包
檢驗一下:
rustc --version
當版本號顯示出來,就代表你成功了。
更新與卸載
rustup update
一行搞定更新。
rustup self uninstall
一行搞定卸載。
如果你需要查看文檔,就執行下面這一行在瀏覽器打開
rustup self uninstall
rust起步
寫我們的第一個程序,hello world
(這里是對于Linux、macOS 和 Windows PowerShell的命令,后面的部分也都默認是在這幾類而不是Windows CMD,后續就不再說明了)
mkdir ~/projects #在home目錄建一個projects目錄(文件夾)
cd ~/projects #進入projects
mkdir hello_world #在projects建一個hello_world目錄(文件夾)
cd hello_world #進入hello_world
接下來在hello_world目錄內創建一個源文件,命名為 main.rs。Rust 源文件總是以 .rs 擴展名結尾。如果文件名包含多個單詞,那么按照命名習慣,應當使用下劃線來分隔單詞。例如命名為 hello_world.rs,而不是 helloworld.rs。
- 創建源文件:
touch main.rs
進入文本編輯:
vim main.rs
按a進入插入模式,然后把我們的源代碼放進去:
fn main() {println!("Hello, world!");
}
然后Ctrl + X完成保存,再按ESC退出插入模式。
最后進行保存:
:wq #按冒號+wq,進行修改后保存
#如果是未進行過修改直接退出,那就是:q
接下來對這個main.rs進行編譯和運行
rustc main.rs
./main
輸入上面兩行,如果出現了"Hello,world!",那么恭喜你,已經成功走進了rust的大門!
語法其實對于有基礎的同學來說,看起來也很熟悉。
不過要注意:
- 這里的print是帶
!
的,這種實際上是rust的宏,并不是調用函數哦,println()
才是函數。 - 注意rust使用四個空格作為縮進而不是制表符tab。
cargo
如果使用前面部分介紹的官方安裝包的話,則自帶了 Cargo。如果通過其他方式安裝的話,可以在終端輸入如下命令檢查是否安裝了 Cargo:
cargo --version
能顯示版本號證明已經安裝。
使用cargo創建項目
- 回到 projects 目錄
- 創建目錄與項目并進入(cd)
cargo new hello_cargo
cd hello_cargo
- 請自行選用文本編輯器打開 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]
這個文件使用 TOML (Tom’s Obvious, Minimal Language) 格式,這是 Cargo 配置文件的格式。
第一行,[package],是一個片段(section)標題,表明下面的語句用來配置一個包。隨著我們在這個文件增加更多的信息,還將增加其他片段(section)。
接下來的三行設置了 Cargo 編譯程序所需的配置:項目的名稱、項目的版本以及要使用的 Rust 版本。附錄 E 會介紹 edition 的值。
最后一行,[dependencies],是羅列項目依賴的片段的開始。在 Rust 中,代碼包被稱為 crates。這個項目并不需要其他的 crate,不過在第二章的第一個項目會用到依賴,那時會用得上這個片段。
現在打開 src/main.rs 看看:
文件名:src/main.rs
fn main() {println!("Hello, world!");
}
Cargo 為你生成了一個 “Hello, world!” 程序,正如我們之前編寫的示例 1-1!目前為止,我們的項目與 Cargo 生成項目的區別是 Cargo 將代碼放在 src 目錄,同時項目根目錄包含一個 Cargo.toml 配置文件。
Cargo 期望源文件存放在 src 目錄中。項目根目錄只存放 README、license 信息、配置文件和其他跟代碼無關的文件。使用 Cargo 幫助你保持項目干凈整潔,一切井井有條。
如果沒有使用 Cargo 開始項目,比如我們創建的 Hello,world! 項目,可以將其轉化為一個 Cargo 項目。將代碼放入 src 目錄,并創建一個合適的 Cargo.toml 文件。
cargo基本命令
- 編譯并執行
cargo run #編譯形成可執行文件并運行
- 如果是只編譯
cargo build
由于默認的構建方法是調試構建(debug build),Cargo 會將可執行文件放在名為 debug 的目錄中。
所以要執行的話
./target/debug/hello_cargo
選擇執行正確的路徑下的文件就好,到這里的效果就相當于cargo run
了。
所以平時沒有特殊需求,就直接cargo run
- 不編譯但確認可編譯
cargo check
check的意義是讓你確認你編寫的代碼沒有語法上的錯誤,平時就check檢錯,當你真正要執行代碼的時候,再build或者run就好。
當項目最終準備好發布時,可以使用
cargo build --release
來優化編譯項目。這會在target/release
而不是target/debug
下生成可執行文件。這些優化可以讓 Rust 代碼運行的更快,不過啟用這些優化也需要消耗更長的編譯時間。這也就是為什么會有兩種不同的配置:一種是為了開發,你需要經常快速重新構建;另一種是為用戶構建最終程序,它們不會經常重新構建,并且希望程序運行得越快越好。如果你在測試代碼的運行時間,請確保運行cargo build --release
并使用target/release
下的可執行文件進行測試。
其實,要在任何已存在的項目上工作時,可以使用如下命令通過 Git 檢出代碼,移動到該項目目錄并構建:
$ git clone example.org/someproject
$ cd someproject
$ cargo build
到這里,我們對rust的構建和運行已經了解了,可以開始我們的rust之路了。
摘選自:
Rust程序設計語言中文版