自 2015 年发布以来,Rust 已经成为开发者中最受喜爱的编程语言之一。Rust 具有出色的性能和安全特性,以直观简洁的语法著称。

Rust 适用于构建各种程序,包括 Web 应用、命令行工具和网络服务。Rust 拥有许多现代编程语言应具备的特性,如并发性、类型推断等。

相关:Rust 入门教程#1:创建并运行您的第一个 Rust 程序  https://www.linuxmi.com/rust-tutorial-1-hello-world.html

开始使用 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提供的结构体功能实现不同的面向对象编程概念。

发表回复