核心语法与结构对比
从 JavaScript 视角学习 Rust 基础语法,包括变量声明、数据类型、控制流和函数定义
核心语法与结构对比
📖 学习目标
通过对比 JavaScript 和 Rust 的基础语法,快速掌握 Rust 的核心概念。我们将从你熟悉的 JavaScript 语法出发,逐步引入 Rust 的语法特性。
🎯 变量声明与作用域
JavaScript 的变量声明
在 JavaScript 中,我们使用 var
、let
和 const
来声明变量:
正在加载...
Rust 的变量声明
Rust 使用 let
关键字声明变量,默认是不可变的:
正在加载...
关键差异
- 默认不可变性: Rust 中变量默认不可变,需要
mut
关键字才能修改 - 变量遮蔽: Rust 允许在同一作用域内重新声明同名变量
- 类型推导: Rust 编译器可以自动推导变量类型
📊 基本数据类型对比
JavaScript 的数据类型
JavaScript 是动态类型语言:
正在加载...
Rust 的数据类型
Rust 是静态类型语言,类型在编译时确定:
正在加载...
类型系统差异
- 静态 vs 动态: Rust 在编译时检查类型,JavaScript 在运行时检查
- 整数类型: Rust 有多种整数类型(i8, i16, i32, i64, u8, u16, u32, u64)
- 字符串: Rust 区分
String
(拥有所有权)和&str
(借用)
🔄 控制流对比
JavaScript 的控制流
正在加载...
Rust 的控制流
正在加载...
控制流差异
- if 表达式: Rust 的
if
可以返回值,用于赋值 - match 语句: 比 JavaScript 的
switch
更强大,支持模式匹配 - 循环语法: Rust 使用
for in
语法,更简洁
🏗️ 函数定义对比
JavaScript 的函数
正在加载...
Rust 的函数
正在加载...
函数差异
- 类型注解: Rust 需要为参数和返回值指定类型
- 返回值: Rust 函数的最后一个表达式自动作为返回值
- 默认参数: Rust 通过
Option
类型实现默认参数 - 函数签名: Rust 的函数签名更明确,有助于编译时检查
🎭 闭包对比
JavaScript 的闭包
正在加载...
Rust 的闭包
正在加载...
闭包差异
- 语法: Rust 闭包使用
|参数|
语法 - 所有权: Rust 闭包需要考虑所有权和借用
- 类型推导: Rust 编译器可以推导闭包类型
- 迭代器: 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 {"需要努力"};
📝 总结
在这一章中,我们学习了:
- 变量声明: Rust 默认不可变,需要
mut
关键字才能修改 - 数据类型: Rust 是静态类型语言,类型在编译时确定
- 控制流: Rust 的
if
是表达式,match
比switch
更强大 - 函数: Rust 需要类型注解,最后一个表达式是返回值
- 闭包: Rust 闭包语法简洁,需要考虑所有权
关键要点
- Rust 的语法更严格,但提供了更好的安全性和性能
- 从 JavaScript 迁移到 Rust 需要适应静态类型系统
- Rust 的所有权系统将在后续章节中详细介绍
- 多练习,多对比,逐步适应 Rust 的编程思维
在下一章中,我们将学习 Rust 的模块系统和包管理,了解如何组织和管理 Rust 项目。
继续学习: 模块系统与构建工具