開始用 Rust 編寫代碼!

作者 | Ukeje

Rust 是一種強大的語言,但從哪裏開始入手呢?如果您習慣使用另一種語言,就應該知道 Rust 如何處理這些熟悉的概念。

梳理 Rust

自 2015 年發佈以來,Rust 已成爲開發人員最喜歡的編程語言之一。Rust 提供了出色的性能和安全特性,具有直觀簡潔的語法,因而成爲理想的編程語言。

Rust 適合構建各種程序,包括 Web 應用程序、命令行工具和網絡服務。Rust 包含您期望從現代編程語言獲得的許多特性,比如併發性和類型推斷等。

Rust 是一種跨平臺編程語言,可以在大多數操作系統上運行。若要開始使用 Rust,請訪問官方 Rust 網站(https://www.rust-lang.org/tools/install),併爲你的操作系統安裝首選版本。

一旦安裝了 Rust,你就可以開始在擴展名爲. rs 的 Rust 文件中編寫程序。Rust 用途廣泛,易於上手。如果您之前有過編程經驗,會發現它很簡單。

Rust 中的變量和常量

Rust 有很強的表達力,並且有多種聲明變量的方法。您可以使用 let 關鍵字來聲明變量。

下面是在 Rust 中聲明變量的方法:

變量 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);
}

程序在使用 println! 宏打印輸出之前聲明兩個 age 變量。第一個 age 變量指定數據類型,第二個變量不指定。

在聲明變量時不必指定其數據類型。Rust 編譯器在編譯時根據值的數據類型推斷類型。

在 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 數組含有 5 個項。您可以使用索引訪問數組中某個位置的值:

fn main() {
         let numbers = [1, 2, 3, 4, 5];
         let x = numbers[3];
         println!("{}", x)
}

main 函數輸出訪問數組第四個元素的變量 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 訪問向量的第四個元素,main 函數將值輸出到控制檯。

Rust 的條件語句

條件語句是 Rust 用於程序決策的控制結構之一。您可以使用 if 和 else 關鍵字來處理程序中的決策。

下面這個 if 語句根據兩個整數的相等性向控制檯輸出一個字符串。

fn main() {
         let a: i32 = 12;
         if a == 12 {
             println!("a equals twelve");
         }
}

由於變量等於 12,main 函數使用 println! 宏打印輸出字符串。可以使用 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"),
         }
}

main 函數將 age 變量與 match 語句中的 case 進行匹配,並執行與該值匹配的表達式。下劃線(_)是在值匹配時運行的默認語句。

Rust 中的循環

Rust 爲重複的任務提供循環。Rust 有三種主要類型的循環:loop 循環、while 循環和 for 循環。

loop 關鍵字創建一個無限循環,該循環一直運行,直至遇到 break 關鍵字:

fn main() {
         loop {
         println!("printed repeatedly until break statement is encountered.");
         break;
         }
}

當您想要重複一段代碼時,只要條件的評估結果爲 true,while 循環就很方便:

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 循環遍歷 number 數組,並將每一項打印輸出到控制檯。

聲明和調用 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 Person {
       name: String,
       age: u32,
       is_male: bool,
}

Person 結構體有三個字段:字符串、無符號 32 位整數和布爾值。在定義了一個結構體之後,您可以在程序的其他部分創建其實例:

fn main() {
         let person1 = Person {
             name: String::from("Candace Flynn"),
             age: 16,
             is_male: false,
         };
}

person1 變量是 Person 結構體的一個實例。在實例化時,您可以爲結構體字段賦值。您可以隨心所欲地創建一個結構體的多個實例。

如何在 Rust 中實現 OOP?

Rust 很靈活,您可以在 Rust 中使用結構體等內置數據結構來實現 OOP 概念。

可以使用結構體來替代類。藉助 Rust 的結構體,可以爲類型定義藍圖,並使用 Rust 在結構體方面提供的功能實現不同的 OOP 概念。

原文鏈接:

https://www.makeuseof.com/rust-everything-know-start/

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/t06zLNcqVu7bA7d_Zo19UA