Hello World
学习目标
完成本章学习后,你将能够:
- 创建并运行第一个 Rust 程序
- 理解 Rust 程序的基本结构
- 使用 Cargo 管理 Rust 项目
- 了解 Rust 的编译和执行过程
- 编写简单的 Rust 代码并添加注释
在本章中,我们将创建并运行第一个 Rust 程序。通过这个简单的例子,你将了解 Rust 程序的基本结构和工作流程。
创建第一个 Rust 程序
使用 Cargo 创建项目
最简单的方法是使用 Cargo 创建一个新项目:
cargo new hello_world
cd hello_world
Cargo 会为你创建一个基本的项目结构:
hello_world/
├── Cargo.toml # 项目配置文件
└── src/└── main.rs # 主源代码文件
查看生成的代码
打开 src/main.rs
文件,你会看到 Cargo 已经为你生成了一个简单的 “Hello, world!” 程序:
rust">fn main() {println!("Hello, world!");
}
让我们分析这段代码:
fn main() { ... }
定义了一个名为main
的函数,这是 Rust 程序的入口点。println!("Hello, world!");
是一个宏调用,用于在控制台打印文本。- 注意行尾的分号
;
,在 Rust 中,大多数语句都以分号结束。
运行 Hello World 程序
使用 Cargo 运行
在项目目录中,运行以下命令:
cargo run
Cargo 会编译并运行你的程序,你应该会看到输出:
Hello, world!
编译过程发生了什么?
当你运行 cargo run
时,Cargo 执行以下步骤:
- 编译你的代码及其依赖项
- 生成一个可执行文件(在
target/debug/
目录中) - 运行该可执行文件
你也可以分别执行这些步骤:
# 仅编译
cargo build# 运行编译后的可执行文件
./target/debug/hello_world # 在 Unix 系统上
target\debug\hello_world.exe # 在 Windows 上
修改 Hello World 程序
让我们稍微修改一下程序,使其更加个性化:
rust">fn main() {let name = "Rustacean";println!("Hello, {}!", name);println!("Welcome to the world of Rust programming.");
}
这个修改后的程序引入了几个新概念:
let name = "Rustacean";
声明了一个变量name
并赋值为字符串 “Rustacean”。println!("Hello, {}!", name);
使用了格式化字符串,其中{}
是一个占位符,会被name
的值替换。
保存文件并再次运行:
cargo run
你应该会看到:
Hello, Rustacean!
Welcome to the world of Rust programming.
添加注释
Rust 支持多种注释风格:
rust">// 这是一个单行注释/* 这是一个多行注释 *//// 这是文档注释,用于生成文档
/// 它支持 Markdown 格式//! 这是模块级文档注释,通常用在文件开头
让我们在我们的程序中添加一些注释:
rust">// hello_world.rs - 我的第一个 Rust 程序fn main() {// 声明一个变量并赋值let name = "Rustacean";// 使用格式化打印println!("Hello, {}!", name);// 打印欢迎消息println!("Welcome to the world of Rust programming.");
}
理解 Rust 程序结构
main 函数
每个 Rust 可执行程序都必须有一个 main
函数,它是程序的入口点。函数定义以 fn
关键字开始,后跟函数名和一对圆括号,然后是函数体,用花括号 {}
包围。
语句和表达式
Rust 中的代码由语句和表达式组成:
- 语句:执行某些操作但不返回值的指令,通常以分号结束。
- 表达式:计算并返回值的代码片段,不以分号结束(如果加上分号,它就变成了一个语句)。
宏
println!
是一个宏,而不是函数。Rust 中的宏以感叹号结尾,它们在编译时展开为更复杂的代码。宏提供了比函数更强大的元编程能力。
示例程序
让我们创建一个稍微复杂一点的 Hello World 程序,展示更多 Rust 的基本特性:
rust">// hello_advanced.rs - 一个增强版的 Hello World 程序fn main() {// 使用变量存储名字let name = "Rustacean";// 使用格式化打印println!("Hello, {}!", name);// 使用多个参数let language = "Rust";let year = 2023;println!("Welcome to {} programming in {}!", language, year);// 使用不同的格式化选项println!("十进制: {}, 十六进制: {:x}, 二进制: {:b}", 42, 42, 42);// 使用命名参数println!("{language} is {adjective}!", language="Rust", adjective="awesome");
}
总结
在本章中,我们学习了:
- 如何使用 Cargo 创建新的 Rust 项目
- Rust 程序的基本结构和 main 函数
- 如何编译和运行 Rust 程序
- 使用
println!
宏输出信息 - Rust 中的基本注释类型
- 语句和表达式的区别
现在你已经成功运行了你的第一个 Rust 程序,并了解了其基本结构。在下一章中,我们将深入学习 Rust 的变量系统和数据类型,这是理解 Rust 编程的基础。