1. 变量与数据类型:
- 使用 let 关键字声明变量,变量默认是不可变的。
- 数据类型包括整数、浮点数、布尔值等。
- 可以使用 mut 关键字声明可变变量。
let x = 5; // 不可变变量
let mut y = 10; // 可变变量
2. 函数:
- 使用 fn 关键字定义函数。
- 函数参数必须声明类型。
- 函数体中最后一行的表达式即为返回值。
fn add(x: i32, y: i32) -> i32 {
x + y
}
3. 所有权(Ownership):
- Rust 通过所有权系统来管理内存,确保内存安全。
- 每个值都有一个所有者,当所有者离开作用域时,值就会被销毁。
let s1 = String::from("Hello");
let s2 = s1; // s1 的所有权被转移到 s2,s1 无效
4. 借用与引用:
- 可以通过引用(references)来借用变量的所有权而不转移它。
- 可以有多个不可变引用,但只能有一个可变引用,且不可变引用和可变引用不能同时存在。
let s1 = String::from("Hello");
let len = calculate_length(&s1);
fn calculate_length(s: &String) -> usize {
s.len()
}
5. 生命周期(Lifetime):
- 生命周期指定引用的有效范围,帮助编译器检查引用的合法性。
fn longest<'a>(s1: &'a str, s2: &'a str) -> &'a str {
if s1.len() > s2.len() {
s1
} else {
s2
}
}
6. 模式匹配(Pattern Matching):
- 使用 match 关键字进行模式匹配,类似于 switch 语句。
match value {
1 => println!("One"),
2 | 3 => println!("Two or Three"),
_ => println!("Other"),
}
7. 错误处理:
- 使用 Result 类型来处理可能的错误。
- 使用 unwrap 或 expect 可以方便地处理成功或失败情况。
let result: Result<i32, &str> = Ok(42);
let value = result.unwrap();
这只是 Rust 的一些基本语法和语义特性的简要介绍。Rust 还有许多其他高级特性,包括模块系统、trait、生命周期参数等,这些都使得 Rust 成为一种强大而安全的编程语言。
转载请注明出处:http://www.zyzy.cn/article/detail/6782/Rust