Rust 基础语法


Rust 基础语法

Rust 是一种现代化系统编程语言,它拥有高性能、安全性和并发性。本文将介绍 Rust 的一些基础语法。

变量和类型推断

在 Rust 中,使用 let 关键字来定义变量。例如:

let x = 5;

Rust 是一种静态类型语言,但它可以根据上下文自动推断变量类型。例如:

let x: i32 = 5;

Rust 中的大多数数据类型都使用基本类型,包括整数、浮点数、布尔值和字符。还有一些复杂的数据类型,如数组、元组和结构体。Rust 还有一个特殊的类型,即没有值的类型 (),它类似于其他语言中的 void

函数

Rust 中的函数使用关键字 fn 定义。例如:

fn add(a: i32, b: i32) -> i32 {
    return a + b;
}

函数可以有一个返回类型,但不强制要求使用 return 关键字,因为 Rust 的函数会自动返回最后一个表达式的值。例如:

fn add(a: i32, b: i32) -> i32 {
    a + b
}

函数参数可以使用类型注释指定类型。例如,i32 表示 32 位整数,&str 表示字符串引用。函数还可以具有默认参数。

控制流

Rust 提供了常见的控制流语句,如 if/else、while、for 循环等。它们非常类似于其他编程语言。

let x = 5;
if x == 5 {
    println!("x is 5");
} else {
    println!("x is not 5");
}

let mut y = 0;
while y < 5 {
    print!("{} ", y);
    y += 1;
}

for i in 0..5 {
    print!("{} ", i);
}

Rust 还支持 match 表达式,类似于其他语言中的 switch/case。

所有权和借用

Rust 中最重要的概念之一是所有权。所有权规则使得 Rust 可以避免空指针、数据竞争和其他常见的编程错误。

每个值都有一个所有者,允许我们在创建值时跟踪其在内存中的位置。当所有者离开作用域时,该值将被释放。例如:

{
    let s = String::from("hello");
    println!("{}", s);
}

在这个例子中,s 是一个字符串类型,它有一个所有者。当代码块结束时,所有者被丢弃,内存被释放。

但如果我们想在代码块的另一个位置使用这个字符串,如何做呢?Rust 提供了借用的概念,允许我们在没有转移所有权的情况下借用值。例如:

{
    let s = String::from("hello");
    print_string(&s);
}

fn print_string(s: &String) {
    println!("{}", s);
}

在这个例子中,我们将字符串的引用传递给函数,而不是直接传递字符串。&s 表示对字符串的借用,函数不拥有它,不需要释放它,执行完后借用方式也失效。

总之,Rust 是一种高性能、安全且易于使用的系统编程语言。通过基础语法的了解,你可以进一步了解 Rust 的高级特性,如并发、错误处理和模块化编程。