?? 歡迎大家來到景天科技苑??
🎈🎈 養成好習慣,先贊后看哦~🎈🎈
🏆 作者簡介:景天科技苑
🏆《頭銜》:大廠架構師,華為云開發者社區專家博主,阿里云開發者社區專家博主,CSDN全棧領域優質創作者,掘金優秀博主,51CTO博客專家等。
🏆《博客》:Python全棧,Golang開發,Rust開發,云原生開發,PyQt5和Tkinter桌面開發,小程序開發,人工智能,js逆向,App逆向,網絡系統安全,數據分析,Django,fastapi,flask等框架,云原生K8S,linux,shell腳本等實操經驗,網站搭建,數據庫等分享。所屬的專欄:Rust語言通關之路
景天的主頁:景天科技苑
文章目錄
- Rust開發入門
- 1、rust簡介
- 2、安裝rust
- 3、第一個HelloWorld
- 3.1 創建項目目錄
- 3.2 編寫并運行 Rust 程序
- 3.3 分析 Rust 程序
- 4、cargo
- 4.1 使用 Cargo 創建項目
- 4.2 構建并運行 Cargo 項目
- 4.3 發布(release)構建
- 4.4 把 Cargo 當作習慣
- 5、總結
Rust開發入門
1、rust簡介
官網:https://www.rust-lang.org/
Rust于2015年發布第一個穩定版本
連續四年stackoverflow的最受歡迎的語言
特點:
高性能,媲美C/C++,可以做嵌入式開發
沒有GC,同時也不需要手工管理內存(所有權機制)
沒有野指針,當多個指針指向同一個對象,當通過其中一個指針見將對象刪除時,剩余指向該對象的指針就成了野指針。就訪問不到對象了,再訪問就會報空指針錯誤
并發安全
集所有語言之大成者
2、安裝rust
直接官網下載
Windows版的,直接下載exe文件,雙擊按提示安裝
linux版本的,直接執行一條命令安裝
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
這個命令下載一個腳本并開始 rustup 工具的安裝,這會安裝最新穩定版 Rust。過程中可能會提示你輸入密碼。如果安
裝成功,將會出現如下內容:
Rust is installed now. Great!
當然,如果你不信任采用 curl URL | sh 來安裝軟件,請隨意下載、檢查和運行這個腳本。
此安裝腳本自動將 Rust 加入系統 PATH 環境變量中,在下一次登陸時生效。如果你希望立刻就開始使用 Rust 而不重啟
終端,在 shell 中運行如下命令手動將 Rust 加入系統 PATH 變量:
source $HOME/.cargo/env
檢查是否安裝成功
rustc --version
另外,你需要一個某種類型的連接器(linker)。可能他們已經安裝了,不過當嘗試編譯 Rust 程序并得到表明連接器無
法執行的錯誤時,你需要自行安裝一個。可以安裝一個 C 編譯器,因為它通常帶有正確的連接器。查看對應平臺的文檔
了解如何安裝 C 編譯器。一些常見的 Rust 包會依賴 C 代碼并因此也會需要 C 編譯器,所以目前無論如何安裝它都是值
得的。
卸載 Rust
在任何時候如果您想卸載 Rust,您可以運行 rustup self uninstall。
3、第一個HelloWorld
現在安裝好了 Rust,讓我們來編寫第一個 Rust 程序。當學習一門新語言的時候,使用該語言在屏幕上打印 “Hello,world!” 是一項傳統,這里我們將遵循這個傳統!
創建項目目錄
首先以創建一個存放 Rust 代碼的目錄開始。Rust 并不關心代碼的位置,不過對于本書的練習和項目來說,我們建議你在
home 目錄中創建一個 projects 目錄,并將你的所有項目置于此處。
3.1 創建項目目錄
打開終端并輸入如下命令創建一個 projects 目錄并在 projects 目錄中為 “Hello, world!” 創建一個目錄。
對于 Linux 和 macOS,輸入:
cd ~
mkdir projects
cd ~/projects
mkdir hello_world
cd hello_world
3.2 編寫并運行 Rust 程序
接下來,新建一個叫做 main.rs 的源文件。Rust 源代碼總是以 .rs 后綴結尾。如果文件名包含多個單詞,使用下劃線分隔它們。
例如 my_program.rs,而不是 myprogram.rs。
現在打開剛創建的 main.rs 文件,輸入如下代碼。
文件名: main.rs
fn main(){println!("hello, world!")
}
保存文件,并回到終端窗口。在 Linux 或 macOS 上,輸入如下命令編譯并運行文件:
rustc main.rs
如果報一下錯誤,就需要安裝gcc
yum install gcc -y
安裝完成后編譯,生成可執行文件
運行程序
[root@jingtian01 hello_world ]#./main
不管使用何種系統,字符串 Hello, world! 應該打印到終端。如果沒有看到這些輸出,回到 “故障排除” 部分查找尋求幫助的方式。
如果 Hello, world! 出現了,恭喜你!你已經正式編寫了一個 Rust 程序。現在你成為了一名 Rust 程序員!歡迎!
3.3 分析 Rust 程序
現在,讓我們回過頭來仔細看看 “Hello, world!” 程序中到底發生了什么。這是拼圖的第一片:
fn main() {
}
這幾行定義了一個 Rust 函數。 main 函數是特殊的:它是每個可執行的 Rust 程序所首先執行的代碼。
第一行代碼聲明了一個叫做 main 的函數,它沒有參數也沒有返回值。如果有參數的話,它們的名稱應該出現在括號中,位于 ( 和 ) 之間。
還須注意函數體被包裹在花括號中, { 和 } 之間。Rust 要求所有函數體都要用花括號包裹起來(有些語言,當函數體只有一行時可以省略花括號,但在 Rust 中是不行的)。
一般來說,將左花括號與函數聲明置于同一行并以空格分隔,是良好的代碼風格。
如果你希望在 Rust 項目中保持一種標準風格, rustfmt 會將代碼格式化為特定的風格。
rustfmt main.rs
在 main() 函數中是如下代碼:
println!(“Hello, world!”);
這行代碼完成這個簡單程序的所有工作:在屏幕上打印文本。這里有四個重要的細節需要注意。
首先 Rust 使用 4 個空格的縮進風格,而不是 1 個制表符(tab)。
第二, println! 調用了一個 Rust 宏(macro)。如果是調用函數,則應輸入 println (沒有 ! )。你只需記住,當看到符號 ! 的時候,就意味著調用的是宏而不是普通函數。
第三, “Hello, world!” 是一個 字符串。我們把這個字符串作為一個參數傳遞給 println! ,字符串將被打印到屏幕上。
第四,該行以分號結尾( ; ),這代表一個表達式的結束和下一個表達式的開始。大部分 Rust 代碼行以 ; 結尾。
4、cargo
僅僅使用 rustc 編譯簡單程序是沒問題的,不過隨著項目的增長,你可能需要控制你項目的方方面面,并且更容易地將
代碼分享給其它人或項目。接下來,我們要介紹一個叫做 Cargo 的工具,它會幫助你編寫真實世界中的 Rust 程序。
Cargo 是 Rust 的構建系統和包管理器。大部分 Rustacean 們使用 Cargo 來管理他們的 Rust 項目,因為它可以為你處理很多任務,比如構建代碼、下載依賴庫并編譯這些庫。(我們把代碼所需要的庫叫做 依賴(dependencies)。
最簡單的 Rust 程序,比如我們剛剛編寫的,并沒有任何依賴。所以如果使用 Cargo 來構建 “Hello, world!” 項目,將只會
用到 Cargo 構建代碼那部分的功能。隨著編寫的程序更加復雜,你會添加依賴,如果你一開始就使用 Cargo 的話,添加依賴將會變得簡單許多。
由于絕大部分 Rust 項目使用 Cargo,接下來的部分將假設你也使用 Cargo。如果使用 “安裝” 部分介紹的官方安裝包
的話,則自帶了 Cargo。如果通過其他方式安裝的話,可以在終端輸入如下命令檢查是否安裝了 Cargo:
cargo --version
4.1 使用 Cargo 創建項目
讓我們使用 Cargo 來創建一個新項目,然后看看與上面的 hello_world 項目有什么不同。
回到 projects 目錄(或者任何你放置代碼的目錄)。接著并在任何操作系統下運行:
cargo new hello_cargo --bin
cd hello_cargo
第一行命令新建了名為 hello_cargo 的二進制可執行程序。傳遞給 cargo new 的 --bin 參數生成一個可執行程序(通常就叫做 二進制文件,binary),而不是一個庫。
項目的名稱被定為 hello_cargo ,同時 Cargo 在一個同名目錄中創建項目文件。
進入 hello_cargo 目錄并列出文件。將會看到 Cargo 生成了兩個文件和一個目錄:一個 Cargo.toml 文件和一個 src 目
錄,main.rs 文件位于 src 目錄中。它也在 hello_cargo 目錄初始化了一個 git 倉庫,以及一個 .gitignore 文件。
請隨意使用任何文本編輯器打開 Cargo.toml 文件。
[root@jingtian01 hello_cargo ]#cat Cargo.toml
[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2024"[dependencies]
這個文件使用 TOML (Tom’s Obvious, Minimal Language) 格式,這是 Cargo 的配置文件的格式。
第一行, [package] ,是一個部分標題,表明下面的語句用來配置一個包。隨著我們在這個文件增加更多的信息,還將增加其他部分。
接下來的三行設置了 Cargo 編譯程序所需的配置:項目的名稱、版本,它們告訴 Cargo 需要編譯這個項目。
Cargo 從環境中獲取你的名稱和 email 信息,所以如果這些信息不正確,請修改并保存此文件。
最后一行, [dependencies] ,是項目依賴列表(我們稱呼 Rust 代碼包為 crate)部分的開始。
在 Rust 中,代碼包被稱為
crates。這個項目并不需要任何其他的 crate,現在打開 src/main.rs 看看:
[root@jingtian01 src ]#cat main.rs
fn main() {println!("Hello, world!");
}
Cargo 為你生成了一個 “Hello World!” 程序,正如我們之前示例中編寫的那個!目前為止,之前項目與 Cargo 生成項目的區別是 Cargo 將代碼放在 src 目錄,
同時項目根目錄包含一個 Cargo.toml 配置文件
Cargo 期望源文件位于 src 目錄。項目根目錄只留給 README、license 信息、配置文件和其他跟代碼無關的文件。使用Cargo 幫助你保持項目干凈整潔,一切井井有條。
如果沒有用 Cargo 開始項目,比如 hello_world 目錄中的項目,可以將其轉化為一個 Cargo 項目。將代碼放入 src 目錄,并創建一個合適的 Cargo.toml 文件。
4.2 構建并運行 Cargo 項目
現在讓我們看看通過 Cargo 構建和運行 “Hello, world!” 程序有什么不同。在 hello_cargo,輸入下面的命令來構建項目:
[root@jingtian01 hello_cargo ]#cargo buildCompiling hello_cargo v0.1.0 (/root/projects/hello_cargo)Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.19s
這個命令會創建 target/debug/hello_cargo(或者在 Windows 上是 target\debug\hello_cargo.exe)可執行文件,而不是在目前目錄。
可以通過這個命令運行可執行文件:
[root@jingtian01 hello_cargo ]#./target/debug/hello_cargo
Hello, world!
如果一切順利, Hello, world! 應該打印在終端上。首次運行 cargo build 時也會使 Cargo 在項目根目錄創建一個新文件:Cargo.lock。
這個文件記錄項目依賴的實際版本。這個項目并沒有依賴,所以其內容比較少。你自己永遠也不需要碰這個文件,讓 Cargo 處理它就行了。
我們剛剛使用 cargo build 構建了項目并使用 ./target/debug/hello_cargo 運行了程序,也可以使用 cargo run 在一個命令中同時編譯并運行生成的可執行文件:
[root@jingtian01 hello_cargo ]#cargo runFinished `dev` profile [unoptimized + debuginfo] target(s) in 0.00sRunning `target/debug/hello_cargo`
Hello, world!
注意這一次并沒有出現表明 Cargo 正在編譯 hello_cargo 的輸出。Cargo 發現文件并沒有被改變,就直接運行了二進制文
件。如果修改了源文件的話,Cargo 會在運行之前重新構建項目。
Cargo 還提供了一個叫 cargo check 的命令。該命令快速檢查代碼確保其可以編譯但并不產生可執行文件:
[root@jingtian01 hello_cargo ]#cargo check
為什么你會不需要可執行文件呢?通常 cargo check 要比 cargo build 快得多,因為它省略了生成可執行文件的步驟。
如果編寫代碼時持續的進行檢查, cargo check 會加速開發!為此很多 Rustaceans 編寫代碼時運行 cargo check 定期運行
cargo check 確保它們可以編譯。當準備好使用可執行文件時運行 cargo build 。
作為目前所學的關于 Cargo 內容的回顧:
可以使用 cargo build 或 cargo check 構建項目。
可以使用 cargo run 一步構建并運行項目。
有別于將構建結果放在與源碼相同的目錄,Cargo 會將其放到 target/debug 目錄。
Cargo 的一個額外的優點是不管你使用什么操作系統其命令都是一樣的。所以從此以后本書將不再為 Linux 和 macOS 以及 Windows 提供相應的命令。
4.3 發布(release)構建
當項目最終準備好發布了,可以使用 cargo build --release 來優化編譯項目。
這會在 target/release 而不是 target/debug 下生成可執行文件。
這些優化可以讓 Rust 代碼運行的更快,不過啟用這些優化也需要消耗更長的編譯時間。
這也就是為什么會有兩種不同的配置:一種為了開發,你需要經常快速重新構建;
另一種為了構建給用戶最終程序,它們不會經常重新構建,并且希望程序運行得越快越好。
如果你在測試代碼的運行時間,請確保運行 cargo build --release 并使用target/release 下的可執行文件進行測試。
4.4 把 Cargo 當作習慣
對于簡單項目, Cargo 并不比 rustc 提供了更多的優勢,不過隨著開發的深入終將證明其價值。
對于擁有多個 crate 的復雜項目,讓 Cargo 來協調構建將簡單的多。
即便 hello_cargo 項目十分簡單,它現在也使用了很多你之后的 Rust 生涯將會用得上的實用工具。其實對于任何你想要
從事的項目,可以使用如下命令通過 Git 檢出代碼,移動到該項目目錄并構建:
5、總結
你已經準備好迎來 Rust 之旅的偉大開始!在本文中,你學習了如何:
使用 rustup 安裝最新穩定版的 Rust
跟新到新版的 Rust
打開本地安裝的文檔
直接通過 rustc 編寫并運行 “Hello, world!” 程序
使用 Cargo 風格創建并運行新項目
現在是一個通過構建更大的項目來熟悉讀寫 Rust 代碼的好時機。