Rust 適用于構建各種程序,包括 Web 應用、命令行工具和網絡服務。Rust 擁有許多現代編程語言應具備的特性,如并發性、類型推斷等。
自 2015 年發布以來,Rust 已經成為開發者中最受喜愛的編程語言之一。Rust 具有出色的性能和安全特性,以直觀簡潔的語法著稱。
Rust 適用于構建各種程序,包括 Web 應用、命令行工具和網絡服務。Rust 擁有許多現代編程語言應具備的特性,如并發性、類型推斷等。
開始使用 Rust
Rust 是一個跨平臺的編程語言,可在大多數操作系統上運行。要開始使用Rust,請前往官方Rust網站,并安裝適合您操作系統的首選版本。
安裝完Rust后,您可以開始在具有.rs擴展名的Rust文件中編寫程序。Rust非常靈活且易于學習。如果您具有先前的編程經驗,您會發現它很簡單。
Rust 中的變量和常量
Rust具有高度表達性,有多種聲明變量的方法。您可以使用let關鍵字來聲明變量。
以下是在Rust中聲明變量的示例:
let a: String;
let b: i32;
let c: () = ();
a和b變量分別是一個字符串和一個整數。c變量是Rust的單位類型,用作函數和表達式的占位符。
在可選的數據類型聲明之后,您可以使用等號來聲明和初始化具有值的變量。
fn main(){
let age: String = String::from("five years old");
let age = 5; // equivalent to let age: i32 = 5;
println!("{}", age);
}
該程序在打印之前聲明了兩個age變量,并使用println!宏進行打印。第一個age變量指定了數據類型,而第二個沒有。
在聲明變量時,您不必指定變量的數據類型。Rust編譯器會在編譯時根據值的數據類型推斷出類型。
您還可以使用const關鍵字類似于聲明變量來聲明常量:
const age: &str = "five years old";
您無法修改聲明為常量的變量的值。
為 Rust 程序添加注釋
Rust提供了單行注釋和塊注釋的功能。您可以使用雙斜杠(//)進行單行注釋:
fn main() {
// This is a line comment
let x = 5; // This comment explains the purpose of the `x` variable
}
對于多行注釋(塊注釋),使用斜杠后跟星號(/)開始塊注釋,并使用星號后跟斜杠(/)關閉塊注釋:
fn main() {
/*
This is a block comment that spans multiple lines.
It is often used to describe a larger block of code.
*/
let x = 5;
}
您的注釋應該簡明扼要。
Rust 中的數組
數組是具有固定大小的、相同數據類型的元素集合。默認情況下,Rust在堆棧上分配數組。
下面是如何在Rust中聲明數組的方法:
fn main() {
let numbers = [1, 2, 3, 4, 5];
}
numbers數組包含五個元素。您可以使用索引訪問數組中的位置上的值:
fn main() {
let numbers = [1, 2, 3, 4, 5];
let x = numbers[3];
println!("{}", x)
}
主函數打印訪問數組的第四個元素的變量x的值。
Rust 中的向量
Rust提供了向量來彌補數組的局限性。向量具有動態大小,可以根據需要增長和縮小。
下面是在Rust中聲明向量的方法:
fn main() {
let my_vec: Vec<i32> = vec![1, 2, 3, 4, 5];
let x = my_vec[3];
println!("{}", x)
}
my_vec向量是一個包含32位整數的向量。變量x訪問向量的第四個元素,主函數將其值打印到控制臺上。
Rust 的條件語句
條件語句是Rust程序中用于做決策的控制結構之一。你可以使用if和else關鍵字來處理程序中的決策。
下面是一個if語句的例子,根據兩個整數是否相等將一個字符串打印到控制臺上。
fn main() {
let a: i32 = 12;
if a == 12 {
println!("a equals twelve");
}
}
主函數使用println!宏打印字符串,因為變量等于12。
你可以使用else關鍵字來處理if語句為false的情況:
fn main() {
let a: i32 = 12;
if a == 123 {
println!("a equals twelve");
} else {
println!("a does not equal twelve");
}
}
在這個例子中,else語句會執行,因為a的值不等于123。
你可以使用match關鍵字來處理復雜的條件語句:
fn main() {
let age: i32 = 7;
match age {
1 => println!("one"),
2 => println!("two"),
3 => println!("three"),
_ => println!("zero"),
}
}
主函數使用match語句將age變量與匹配的case進行匹配,并執行與值匹配的表達式。下劃線(_)是默認語句,在值有匹配時執行。
Rust 中的循環
Rust提供了用于重復任務的循環。Rust有三種主要類型的循環:loop、while和for循環。
loop關鍵字創建一個無限循環,直到遇到break關鍵字才會停止:
fn main() {
loop {
println!("重復打印,直到遇到break語句。");
break;
}
}
while循環在條件為true時重復執行代碼塊:
fn main() {
let mut count = 0;
while count < 5 {
println!("The count is {}", count);
count += 1;
}
}
for循環適用于迭代集合中的項,比如數組:
fn main() {
let numbers = [1, 2, 3, 4, 5];
for item in numbers.iter() {
println!("The current item is {}", item);
}
}
這個for循環遍歷numbers數組,并將每個項打印到控制臺上。
聲明和調用 Rust 函數
使用fn關鍵字聲明Rust函數,然后是函數名、參數列表和返回類型(如果有)。
下面是一個帶有參數和返回類型的函數聲明示例:
fn add(a: i32, b: i32) -> i32 {
return a + b;
}
add函數接受兩個32位整數參數,并返回一個32位整數,即兩個參數的和。
要從代碼的其他位置調用函數,只需指定函數名和參數(如果有):
fn main() {
let result = add(2, 3);
println!("2 + 3 = {}", result);
}
result變量保存調用add函數的結果。main函數使用println!宏將結果打印到控制臺上。
Rust 中的結構體
Rust 提供了結構體(struct)來定義自定義數據類型,用于將相關的值進行分組。結構體是創建具有特定屬性的對象的藍圖。
下面是如何聲明一個結構體:
struct Person {
name: String,
age: u32,
is_male: bool,
}
Person結構體有三個字段:一個String類型、一個無符號32位整數和一個布爾值。
在定義結構體之后,你可以在程序的其他部分創建它的實例:
fn main() {
let person1 = Person {
name: String::from("Candace Flynn"),
age: 16,
is_male: false,
};
}
person1變量是Person結構體的一個實例。在實例化時,你可以為結構體的字段賦值。你可以創建任意多個結構體的實例。
你可以在 Rust 中實現面向對象編程(OOP)的概念
Rust非常靈活,你可以使用內置的數據結構(如結構體)在Rust中實現面向對象編程的概念。
你可以使用結構體作為類的替代品。通過Rust的結構體,你可以定義類型的藍圖,并使用Rust提供的結構體功能實現不同的面向對象編程概念。