Rust从入门到精通之入门篇:3.Hello World

Hello World

学习目标

完成本章学习后,你将能够:

  • 创建并运行第一个 Rust 程序
  • 理解 Rust 程序的基本结构
  • 使用 Cargo 管理 Rust 项目
  • 了解 Rust 的编译和执行过程
  • 编写简单的 Rust 代码并添加注释

在本章中,我们将创建并运行第一个 Rust 程序。通过这个简单的例子,你将了解 Rust 程序的基本结构和工作流程。

创建第一个 Rust 程序

使用 Cargo 创建项目

最简单的方法是使用 Cargo 创建一个新项目:

bash 复制代码
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!");
}

让我们分析这段代码:

  1. fn main() { ... } 定义了一个名为 main 的函数,这是 Rust 程序的入口点。
  2. println!("Hello, world!"); 是一个宏调用,用于在控制台打印文本。
  3. 注意行尾的分号 ;,在 Rust 中,大多数语句都以分号结束。

运行 Hello World 程序

使用 Cargo 运行

在项目目录中,运行以下命令:

bash 复制代码
cargo run

Cargo 会编译并运行你的程序,你应该会看到输出:

复制代码
Hello, world!

编译过程发生了什么?

当你运行 cargo run 时,Cargo 执行以下步骤:

  1. 编译你的代码及其依赖项
  2. 生成一个可执行文件(在 target/debug/ 目录中)
  3. 运行该可执行文件

你也可以分别执行这些步骤:

bash 复制代码
# 仅编译
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.");
}

这个修改后的程序引入了几个新概念:

  1. let name = "Rustacean"; 声明了一个变量 name 并赋值为字符串 "Rustacean"。
  2. println!("Hello, {}!", name); 使用了格式化字符串,其中 {} 是一个占位符,会被 name 的值替换。

保存文件并再次运行:

bash 复制代码
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 编程的基础。

相关推荐
Asthenia04127 分钟前
操作系统入门:位示图、主存分配、页面置换与磁盘管理
后端
_丿丨丨_18 分钟前
PHP回调后门小总结
android·开发语言·php
想做富婆23 分钟前
Strawberry perl的下载,查询版本号,配置Path环境变量,查找perl解释器的位置
开发语言·perl
李是啥也不会28 分钟前
如何通过JavaScript实现点击播放音频
开发语言·javascript·音视频
加瓦点灯35 分钟前
外观模式(Facade Pattern):复杂系统的“统一入口”
后端
Asthenia04121 小时前
分页入门:简单分页与其他内存管理方式,操作系统小白指南
后端
Asthenia04121 小时前
Linux系统调用入门:进程(execve,exit,getpid,getpgid)/文件(open,close,read,write)
后端
Asthenia04121 小时前
从宏观到微观:MMU、PCB、TLB、CPU是个啥?
后端
Asthenia04121 小时前
操作系统期末复习:深入理解文件组织形式(连续/链接/索引)及Linux实际用法
后端
程序员老冯头1 小时前
第十一节 MATLAB关系运算符
开发语言·前端·数据结构·算法·matlab