以下是一些在 Rust 和 C 语言中常见的语法元素的对照,这有助于理解两种语言之间的主要区别:
1. 变量定义
C:
int a = 10;
char b = 'b';
Rust:
let a = 10; // 不可变变量
let mut b = 'b'; // 可变变量
2. 函数定义
C:
int add(int x, int y) {
return x + y;
}
Rust:
fn add(x: i32, y: i32) -> i32 {
x + y // 注意:Rust 中不需要 return 语句
}
3. 条件语句
C:
if (a > b) {
// do something
} else {
// do something else
}
Rust:
if a > b {
// do something
} else {
// do something else
}
4. 循环
C:
for (int i = 0; i < 10; i++) {
// do something
}
Rust:
for i in 0..10 {
// do something
}
5. 结构体
C:
struct Point {
int x;
int y;
};
struct Point p = {10, 20};
Rust:
struct Point {
x: i32,
y: i32,
}
let p = Point { x: 10, y: 20 };
6. 指针和引用
C:
int x = 10;
int *ptr = &x;
*ptr = 20;
Rust:
let mut x = 10;
let ptr = &mut x; // 可变引用
*ptr = 20;
7. 数组
C:
int arr[3] = {1, 2, 3};
Rust:
let arr: [i32; 3] = [1, 2, 3];
8. 字符串
C:
char *str = "Hello, world!";
Rust:
let str = "Hello, world!"; // 不可变字符串切片
let mut string = String::from("Hello, world!"); // 可变字符串对象
9. 错误处理
C:
// 通常通过返回特定的错误码或使用全局变量 errno
Rust:
// 使用 Result 类型或 panic! 宏
fn do_something() -> Result<(), String> {
// ...
Ok(())
}
10. 内存管理
C:
int *ptr = malloc(sizeof(int));
// 使用 ptr
free(ptr);
Rust:
let mut ptr = Box::new(10); // 自动管理内存
// 使用 ptr
// 内存自动释放
总结
这些对照表展示了 Rust 和 C 语言在语法和内存管理方面的一些基本区别。 Rust 的设计注重安全性和现代化,其语法倾向于表达明确性和类型安全。 虽然这些差异可能需要一定的学习曲线,但 Rust 的特性(如所有权系统、模式匹配、安全的并发编程等)为编写高效、可靠和安全的代码提供了强大的支持。