langShiftlangShift

核心语法与结构对比

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

核心语法与结构对比

📖 学习目标

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


🎯 变量声明与作用域

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

正在加载编辑器...

关键差异

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

📊 基本数据类型对比

正在加载编辑器...

类型系统差异

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

🔄 控制流对比

正在加载编辑器...

控制流差异

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

🏗️ 函数定义对比

正在加载编辑器...

函数差异

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

🎭 闭包对比

正在加载编辑器...

闭包差异

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

🎯 练习题

练习 1: 变量声明转换

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

正在加载编辑器...
查看答案
正在加载编辑器...

练习 2: 函数转换

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

正在加载编辑器...
查看答案
正在加载编辑器...

练习 3: 控制流转换

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

正在加载编辑器...
查看答案
正在加载编辑器...

📝 总结

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

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

关键要点

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

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


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