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 的高级特性,如并发、错误处理和模块化编程。