Rust 初体验6

学习 Rust 的同学,大概都有其他语言的背景。仔细分辨与已有知识的差别,或有助于更好地理解Rust。以下是把 C 语言与 Rust 作一初步对比,以见出其中差别。

1.变量声明

C语言使用intfloat等关键字来声明变量的类型,而Rust则使用类型推断,无需显式声明变量类型。

  • 示例(C语言):
c 复制代码
int x = 5;
float y = 3.14;
  • 示例(Rust):
rust 复制代码
let x = 5;
let y = 3.14;

2.函数定义

C语言使用return关键字返回函数结果,而Rust则使用隐式返回值。

  • 示例(C语言):
c 复制代码
int add(int a, int b) {
    return a + b;
}
  • 示例(Rust):
rust 复制代码
fn add(a: i32, b: i32) -> i32 {
    a + b
}

3.内存管理

C语言需要手动分配和释放内存,而Rust通过所有权系统自动管理内存。

  • 示例(C语言):
c 复制代码
int* create_array(int size) {
    int* arr = malloc(size * sizeof(int));
    return arr;
}
  • 示例(Rust):
Rust 复制代码
fn create_array(size: usize) -> Vec<i32> {
    vec![0; size]
}

4.错误处理

C语言通常使用返回值和全局变量来表示错误状态,而Rust使用Result枚举、Option枚举进行错误处理。

  • 示例(C语言):
c 复制代码
int divide(int a, int b) {
    if (b == 0) {
        return -1; // 错误状态
    }
    return a / b;
}
  • 示例(Rust):
rust 复制代码
fn divide(a: i32, b: i32) -> Result<i32, &'static str> {
    if b == 0 {
        Err("Division by zero")
    } else {
        Ok(a / b)
    }
}

5.循环语句

for循环 :C语言使用for关键字进行循环,可以指定初始值、条件和增量。Rust也使用for关键字进行循环,但语法略有不同,通常用于迭代集合或范围。

  • 示例(C语言):
c 复制代码
for (int i = 0; i < 5; i++) {
    printf("%d\n", i);
}
  • 示例(Rust):
rust 复制代码
for i in 0..5 {
    println!("{}", i);
}

while循环 :C语言使用while关键字进行循环,只要条件为真就会继续执行循环体。Rust也使用while关键字进行循环,与C语言的用法相同。

  • 示例(C语言):
c 复制代码
int i = 0;
while (i < 5) {
    printf("%d\n", i);
    i++;
}
  • 示例(Rust):
rust 复制代码
let mut i = 0;
while i < 5 {
    println!("{}", i);
    i += 1;
}

注意:Rust 语言的 for、while 循环语句中的条件语句不用加括号。

do-while循环 :C语言使用do-while循环,先执行循环体,然后检查条件是否为真。Rust没有内置的do-while循环,但可以通过其他方式实现类似的效果。

  • 示例(C语言):
c 复制代码
int i = 0;
do {
    printf("%d\n", i);
    i++;
} while (i < 5);
  • 示例(Rust):
rust 复制代码
let mut i = 0;
loop {
    println!("{}", i);
    i += 1;
    if i >= 5 {
        break;
    }
}
相关推荐
滴_咕噜咕噜9 分钟前
C#基础总结:常用的数据结构
开发语言·数据结构·c#
martian66510 分钟前
【Java高级篇】——第16篇:高性能Java应用优化与调优
java·开发语言·jvm
许苑向上1 小时前
Java八股文(下)
java·开发语言
菜鸟一枚在这1 小时前
深入解析设计模式之单例模式
开发语言·javascript·单例模式
独孤求败Ace1 小时前
第44天:Web开发-JavaEE应用&反射机制&类加载器&利用链&成员变量&构造方法&抽象方法
java·开发语言
guyoung1 小时前
DeepSeek轻量级本地化部署工具——AIMatrices DeepSeek
rust·llm·deepseek
计算机-秋大田1 小时前
基于Spring Boot的农产品智慧物流系统设计与实现(LW+源码+讲解)
java·开发语言·spring boot·后端·spring·课程设计
matlabgoodboy1 小时前
Matlab代编电气仿真电力电子电机控制自动化新能源微电网储能能量
开发语言·matlab·自动化
镰圈量化1 小时前
当电脑上有几个python版本Vscode选择特定版本python
开发语言·vscode·python
背太阳的牧羊人2 小时前
RAG检索中使用一个 长上下文重排序器(Long Context Reorder) 对检索到的文档进行进一步的处理和排序,优化输出顺序
开发语言·人工智能·python·langchain·rag