柚子快報(bào)激活碼778899分享:【Rust】簡介、安裝和編譯
文章目錄
一、Rust簡介二、Rust 安裝三、Rust 程序結(jié)構(gòu)3.1 模塊(Modules):3.2 函數(shù)(Functions):3.3 變量(Variables):3.4 控制流(Control Flow):3.5 宏(Macros):3.6 完整示例:
四、編譯
用了一個(gè)rust代碼,記錄下。
一、Rust簡介
Rust 是一種系統(tǒng)級(jí)編程語言,由 Mozilla(火狐那個(gè)) 開發(fā),并于 2010 年首次公開發(fā)布。它的設(shè)計(jì)旨在提供高性能、并發(fā)性、安全性以及開發(fā)人員友好的語法。Rust 的特點(diǎn)包括但不限于以下幾個(gè)方面:
特點(diǎn):
安全性:
Rust 最引人注目的特性之一是其強(qiáng)大的安全性。它使用一套稱為 “borrow checker” 的系統(tǒng)來在編譯時(shí)檢查數(shù)據(jù)訪問的正確性,避免了內(nèi)存溢出、空指針和數(shù)據(jù)競爭等常見的安全漏洞。 并發(fā)性:
Rust 提供了輕量級(jí)的線程(稱為 “任務(wù)”)和基于消息傳遞的并發(fā)模型。Rust 的所有權(quán)和借用系統(tǒng)使得在編寫并發(fā)代碼時(shí)更加安全和容易。 性能:
Rust 的設(shè)計(jì)目標(biāo)之一是提供與 C/C++ 相當(dāng)?shù)男阅?。它不?huì)引入運(yùn)行時(shí)開銷,直接編譯為本地機(jī)器碼,使得 Rust 適用于對(duì)性能要求較高的應(yīng)用程序。 內(nèi)存管理:
Rust 通過所有權(quán)(ownership)和借用(borrowing)的概念,實(shí)現(xiàn)了內(nèi)存安全和高效的內(nèi)存管理。所有權(quán)規(guī)則確保了在任何時(shí)刻只有一個(gè)所有者能夠訪問內(nèi)存,借用規(guī)則則允許多個(gè)只讀引用或者單個(gè)可變引用。 功能豐富的標(biāo)準(zhǔn)庫:
Rust 的標(biāo)準(zhǔn)庫提供了豐富的功能,包括支持文件操作、網(wǎng)絡(luò)通信、多線程、數(shù)據(jù)結(jié)構(gòu)、加密等方面。 開發(fā)人員友好的工具:
Cargo 是 Rust 的包管理和構(gòu)建系統(tǒng),提供了項(xiàng)目管理、依賴管理、測試等功能,極大地簡化了項(xiàng)目的管理和構(gòu)建流程。Rust 的錯(cuò)誤信息也是開發(fā)者稱贊的地方之一,友好而詳細(xì)的錯(cuò)誤提示幫助開發(fā)者更快地定位和解決問題。
適用領(lǐng)域:
系統(tǒng)編程:Rust 最初就是為了取代 C 和 C++ 而設(shè)計(jì)的,因此非常適合系統(tǒng)級(jí)編程,包括操作系統(tǒng)、嵌入式開發(fā)等領(lǐng)域。網(wǎng)絡(luò)服務(wù):由于其安全性和性能,Rust 在構(gòu)建網(wǎng)絡(luò)服務(wù)、服務(wù)器端應(yīng)用程序方面表現(xiàn)出色,比如 WebAssembly、后端服務(wù)等。游戲開發(fā):Rust 適合游戲開發(fā)領(lǐng)域,其性能和并發(fā)性使其成為實(shí)現(xiàn)高性能游戲引擎的良好選擇。工具開發(fā):由于 Rust 的穩(wěn)定性、安全性和性能,它也被廣泛用于開發(fā)系統(tǒng)工具、編譯器、分析器等。
二、Rust 安裝
安裝 Rust 時(shí),會(huì)安裝 Rust 編程語言的工具鏈和相關(guān)的工具。包括 Rust 編譯器(rustc)、包管理器 Cargo、Rust 標(biāo)準(zhǔn)庫以及一些輔助工具。具體來說,安裝 Rust 會(huì)包括以下內(nèi)容:
Rust 編程語言工具鏈:
rustc:Rust 的編譯器,負(fù)責(zé)將 Rust 代碼編譯成可執(zhí)行程序或者庫。cargo:Rust 的包管理器和構(gòu)建工具,用于創(chuàng)建、構(gòu)建、測試和發(fā)布 Rust 項(xiàng)目。 Rust 標(biāo)準(zhǔn)庫:
Rust 標(biāo)準(zhǔn)庫包含了常用的數(shù)據(jù)結(jié)構(gòu)、函數(shù)等,是 Rust 開發(fā)中常用的庫之一。 Rust 文檔和示例:
安裝 Rust 后,可以通過 rustup doc 命令來打開 Rust 的文檔,包括標(biāo)準(zhǔn)庫的文檔和 Rust 編程語言的指南。Rust 還會(huì)自帶一些示例程序,可以通過 rustup doc --book 命令來查看官方示例和教程。 Rustup 工具:
rustup 是 Rust 的工具鏈管理器,用于安裝、管理和更新 Rust 工具鏈和版本。它提供了便捷的方式來管理不同版本的 Rust 和工具鏈。 額外的工具:
在安裝 Rust 時(shí),可能會(huì)默認(rèn)安裝一些輔助工具,比如 rustfmt(Rust 代碼格式化工具)和 clippy(Rust 代碼 lint 工具)等。這些工具可以幫助你保持代碼的風(fēng)格統(tǒng)一和代碼質(zhì)量。
下載安裝程序:https://www.rust-lang.org/tools/install
運(yùn)行安裝程序,出現(xiàn): 輸入1,回車即可默認(rèn)安裝,期間會(huì)下載資源文件。
安裝完后查看版本信息:
rustc --version
cargo --version
Rust沒有專門的IDE,你可以使用VS code或者IDEA的插件。
三、Rust 程序結(jié)構(gòu)
項(xiàng)目結(jié)構(gòu):
my_project/
├── Cargo.toml # 項(xiàng)目的配置文件,包含了項(xiàng)目的元數(shù)據(jù)和依賴信息。
└── src/
├── main.rs # 主入口文件
├── lib.rs # 庫的入口文件
├── my_module.rs # 自定義模塊文件
└── my_module_test.rs # 測試文件
Rust 程序的程序結(jié)構(gòu)包括了模塊(Modules)、函數(shù)(Functions)、變量(Variables)、控制流(Control Flow)等部分。下面是 Rust 程序的基本結(jié)構(gòu)和各個(gè)部分的詳細(xì)介紹:
3.1 模塊(Modules):
Rust 中的模塊用于組織代碼,將相關(guān)的功能組織在一起。一個(gè) Rust 程序通常由一個(gè)主模塊(main.rs)和多個(gè)子模塊組成。 使用 mod 關(guān)鍵字定義模塊,模塊可以嵌套。 示例: // 定義一個(gè)模塊
mod my_module {
// 在模塊中定義函數(shù)
pub fn hello() {
println!("Hello from my_module!");
}
}
// 在主函數(shù)中使用模塊中的函數(shù)
fn main() {
my_module::hello();
}
3.2 函數(shù)(Functions):
Rust 中的函數(shù)使用 fn 關(guān)鍵字定義,函數(shù)可以有參數(shù)和返回值。 函數(shù)的參數(shù)和返回值必須指定類型。 示例: // 定義一個(gè)函數(shù)
fn add(a: i32, b: i32) -> i32 {
a + b
}
// 調(diào)用函數(shù)
let result = add(5, 10);
println!("Result: {}", result); // 輸出:Result: 15
3.3 變量(Variables):
Rust 中的變量使用 let 關(guān)鍵字聲明,變量默認(rèn)是不可變的(immutable)。 使用 mut 關(guān)鍵字可以聲明可變變量。 示例: // 聲明不可變變量
let x = 5;
// x = 10; // 錯(cuò)誤!不可變變量不能修改
// 聲明可變變量
let mut y = 10;
y = 15; // 可變變量可以修改
Rust 中常見的變量類型:
類型描述大小i8有符號(hào) 8 位整數(shù)1 字節(jié)i16有符號(hào) 16 位整數(shù)2 字節(jié)i32有符號(hào) 32 位整數(shù)(默認(rèn)類型)4 字節(jié)i64有符號(hào) 64 位整數(shù)8 字節(jié)u8無符號(hào) 8 位整數(shù)1 字節(jié)u16無符號(hào) 16 位整數(shù)2 字節(jié)u32無符號(hào) 32 位整數(shù)4 字節(jié)u64無符號(hào) 64 位整數(shù)8 字節(jié)isize有符號(hào)整數(shù),與指針大小相同平臺(tái)相關(guān)usize無符號(hào)整數(shù),與指針大小相同平臺(tái)相關(guān)f32單精度浮點(diǎn)數(shù)4 字節(jié)f64雙精度浮點(diǎn)數(shù)(默認(rèn)類型)8 字節(jié)bool布爾類型,true 或 false1 字節(jié)char字符類型4 字節(jié)()空類型(Unit 類型,類似于 void)0 字節(jié)str字符串類型(不可變)不定長String字符串類型(可變,堆分配)不定長&str字符串切片引用(不可變)不定長&String字符串引用(不可變)不定長Vec
3.4 控制流(Control Flow):
Rust 中的控制流語句包括 if 表達(dá)式、循環(huán)和匹配模式(match)。 if 表達(dá)式: let number = 7;
if number < 5 {
println!("Number is less than 5");
} else {
println!("Number is greater than or equal to 5");
}
while 循環(huán): let mut count = 0;
while count < 5 {
println!("Count: {}", count);
count += 1;
}
for 循環(huán): for number in 1..=5 {
println!("Number: {}", number);
}
match表達(dá)式: let x = 5;
match x {
1 => println!("One"),
2 => println!("Two"),
_ => println!("Other"),
}
3.5 宏(Macros):
Rust 中的宏允許你編寫類似函數(shù)的代碼來生成代碼。 Rust 內(nèi)置了一些常用的宏,比如 println! 和 vec! 等。 你也可以自定義宏。 示例: macro_rules! greet {
() => {
println!("Hello, World!");
};
}
greet!(); // 調(diào)用宏
3.6 完整示例:
// 定義一個(gè)模塊
mod my_module {
// 在模塊中定義函數(shù)
pub fn hello() {
println!("Hello from my_module!");
}
}
// 定義一個(gè)函數(shù)
fn add(a: i32, b: i32) -> i32 {
a + b
}
// 主函數(shù)
fn main() {
my_module::hello(); // 調(diào)用模塊中的函數(shù)
let result = add(5, 10); // 調(diào)用函數(shù)
println!("Result: {}", result); // 輸出:Result: 15
let x = 5; // 定義不可變變量
let mut y = 10; // 定義可變變量
y = 15; // 修改可變變量的值
let number = 7;
if number < 5 {
println!("Number is less than 5");
} else {
println!("Number is greater than or equal to 5");
}
let mut count = 0;
while count < 5 {
println!("Count: {}", count);
count += 1;
}
for number in 1..=5 {
println!("Number: {}", number);
}
let x = 5;
match x {
1 => println!("One"),
2 => println!("Two"),
_ => println!("Other"),
}
macro_rules! greet {
() => {
println!("Hello, World!");
};
}
greet!(); // 調(diào)用宏
}
四、編譯
以使用 Cargo 這個(gè) Rust 的包管理器和構(gòu)建工具來編譯程序
打開終端(命令行),進(jìn)入到項(xiàng)目目錄。 運(yùn)行:
cargo build
這會(huì)在項(xiàng)目目錄下生成一個(gè) target/ 目錄,其中包含編譯生成的可執(zhí)行文件。
編譯完成后,在終端中運(yùn)行生成的可執(zhí)行文件:
./target/debug/my_project
如果是庫項(xiàng)目,需要將庫文件引入其他 Rust 項(xiàng)目中,或者進(jìn)行單元測試等。
如果需要進(jìn)行發(fā)布版的編譯(帶有優(yōu)化):
cargo build --release
這會(huì)在 target/ 目錄下生成一個(gè) release/ 目錄,其中包含優(yōu)化后的可執(zhí)行文件。這個(gè)可執(zhí)行文件在運(yùn)行時(shí)可能會(huì)更快,但編譯時(shí)間會(huì)更長。
附加命令
cargo run: 編譯并運(yùn)行項(xiàng)目。如果你不需要單獨(dú)編譯,可以直接使用這個(gè)命令來編譯和運(yùn)行項(xiàng)目: cargo check: 檢查代碼是否可以編譯,但不生成可執(zhí)行文件。這個(gè)命令可以用于快速檢查代碼的語法和類型錯(cuò)誤:
注意事項(xiàng)
在使用 Cargo 編譯 Rust 程序時(shí),它會(huì)自動(dòng)下載并管理依賴項(xiàng)。如果你使用的是 IDE(如 Visual Studio Code),通常也會(huì)有相應(yīng)的插件支持 Cargo 的編譯和調(diào)試。
柚子快報(bào)激活碼778899分享:【Rust】簡介、安裝和編譯
精彩內(nèi)容
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。