langShift

核心语法与结构对比

从 JavaScript 视角学习 Rust 基础语法,包括变量声明、数据类型、控制流和函数定义

核心语法与结构对比

📖 学习目标

通过对比 JavaScript 和 Rust 的基础语法,快速掌握 Rust 的核心概念。我们将从你熟悉的 JavaScript 语法出发,逐步引入 Rust 的语法特性。


🎯 变量声明与作用域

JavaScript 的变量声明

在 JavaScript 中,我们使用 varletconst 来声明变量:

正在加载...

Rust 的变量声明

Rust 使用 let 关键字声明变量,默认是不可变的:

正在加载...

关键差异

  1. 默认不可变性: Rust 中变量默认不可变,需要 mut 关键字才能修改
  2. 变量遮蔽: Rust 允许在同一作用域内重新声明同名变量
  3. 类型推导: Rust 编译器可以自动推导变量类型

📊 基本数据类型对比

JavaScript 的数据类型

JavaScript 是动态类型语言:

正在加载...

Rust 的数据类型

Rust 是静态类型语言,类型在编译时确定:

正在加载...

类型系统差异

  1. 静态 vs 动态: Rust 在编译时检查类型,JavaScript 在运行时检查
  2. 整数类型: Rust 有多种整数类型(i8, i16, i32, i64, u8, u16, u32, u64)
  3. 字符串: Rust 区分 String(拥有所有权)和 &str(借用)

🔄 控制流对比

JavaScript 的控制流

正在加载...

Rust 的控制流

正在加载...

控制流差异

  1. if 表达式: Rust 的 if 可以返回值,用于赋值
  2. match 语句: 比 JavaScript 的 switch 更强大,支持模式匹配
  3. 循环语法: Rust 使用 for in 语法,更简洁

🏗️ 函数定义对比

JavaScript 的函数

正在加载...

Rust 的函数

正在加载...

函数差异

  1. 类型注解: Rust 需要为参数和返回值指定类型
  2. 返回值: Rust 函数的最后一个表达式自动作为返回值
  3. 默认参数: Rust 通过 Option 类型实现默认参数
  4. 函数签名: Rust 的函数签名更明确,有助于编译时检查

🎭 闭包对比

JavaScript 的闭包

正在加载...

Rust 的闭包

正在加载...

闭包差异

  1. 语法: Rust 闭包使用 |参数| 语法
  2. 所有权: Rust 闭包需要考虑所有权和借用
  3. 类型推导: Rust 编译器可以推导闭包类型
  4. 迭代器: Rust 闭包与迭代器结合使用更自然

🎯 练习题

练习 1: 变量声明转换

将以下 JavaScript 代码转换为 Rust 代码:

let name = "LangShift";
let age = 25;
let isStudent = true;
let scores = [85, 90, 78, 92];
查看答案
let name = "LangShift";
let age: i32 = 25;
let is_student: bool = true;
let scores: [i32; 4] = [85, 90, 78, 92];

练习 2: 函数转换

将以下 JavaScript 函数转换为 Rust 函数:

function calculateArea(width, height) {
return width * height;
}
function isAdult(age) {
return age >= 18;
}
查看答案
fn calculate_area(width: f64, height: f64) -> f64 {
width * height
}
fn is_adult(age: i32) -> bool {
age >= 18
}

练习 3: 控制流转换

将以下 JavaScript 代码转换为 Rust 代码:

let grade = 85;
let result;
if (grade >= 90) {
result = "优秀";
} else if (grade >= 80) {
result = "良好";
} else if (grade >= 70) {
result = "中等";
} else {
result = "需要努力";
}
查看答案
let grade = 85;
let result = if grade >= 90 {
"优秀"
} else if grade >= 80 {
"良好"
} else if grade >= 70 {
"中等"
} else {
"需要努力"
};

📝 总结

在这一章中,我们学习了:

  1. 变量声明: Rust 默认不可变,需要 mut 关键字才能修改
  2. 数据类型: Rust 是静态类型语言,类型在编译时确定
  3. 控制流: Rust 的 if 是表达式,matchswitch 更强大
  4. 函数: Rust 需要类型注解,最后一个表达式是返回值
  5. 闭包: Rust 闭包语法简洁,需要考虑所有权

关键要点

  • Rust 的语法更严格,但提供了更好的安全性和性能
  • 从 JavaScript 迁移到 Rust 需要适应静态类型系统
  • Rust 的所有权系统将在后续章节中详细介绍
  • 多练习,多对比,逐步适应 Rust 的编程思维

在下一章中,我们将学习 Rust 的模块系统和包管理,了解如何组织和管理 Rust 项目。


继续学习: 模块系统与构建工具