当前位置: 首页 > article >正文

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

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!” 程序:

fn main() {
    println!("Hello, world!");
}

让我们分析这段代码:

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

运行 Hello World 程序

使用 Cargo 运行

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

cargo run

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

Hello, world!

编译过程发生了什么?

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

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

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

# 仅编译
cargo build

# 运行编译后的可执行文件
./target/debug/hello_world  # 在 Unix 系统上
target\debug\hello_world.exe  # 在 Windows 上

修改 Hello World 程序

让我们稍微修改一下程序,使其更加个性化:

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 的值替换。

保存文件并再次运行:

cargo run

你应该会看到:

Hello, Rustacean!
Welcome to the world of Rust programming.

添加注释

Rust 支持多种注释风格:

// 这是一个单行注释

/* 这是一个
   多行注释 */

/// 这是文档注释,用于生成文档
/// 它支持 Markdown 格式

//! 这是模块级文档注释,通常用在文件开头

让我们在我们的程序中添加一些注释:

// 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 的基本特性:

// 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 编程的基础。


http://www.kler.cn/a/610756.html

相关文章:

  • [问题收集]mysql主从分离过程中,数据不同步可能导致的后果以及应对策略
  • Ubuntu 重置密码方法
  • Android studio无法查看源码
  • 2.4 Gannt图【甘特图】
  • 多级缓存和数据一致性问题
  • 鸿蒙Flutter开发故事:不,你不需要鸿蒙化
  • 宝塔docker flarum默认登录账号密码,crazymax/flarum镜像默认登录账号密码
  • 【leetcode hot 100 215】数组中的第K个最大元素
  • Python----计算机视觉处理(Opencv:梯度处理:filiter2D算子,Sobel,Laplacian)
  • 鸿蒙HarmonyOS NEXT之无感监听
  • WPF TextBox实现键盘enter后实时读取TextBox中的值
  • BP神经网络+NSGAII算法(保真)
  • CentOS 7 挂载与卸载文件系统
  • 《TypeScript 7天速成系列》第4天:TypeScript模块与命名空间:大型项目组织之道
  • 前端面试常见的计算机网络内容梳理
  • jeecgboot vue 分片上传 minio
  • redis解决缓存穿透/击穿/雪崩
  • SFT实验报告
  • HBase数据类型深度解析与实例说明
  • Linux开发工具(gcc)