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

news/2025/3/30 11:54:40/

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!");
}

让我们分析这段代码:

  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 程序

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

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

保存文件并再次运行:

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


http://www.ppmy.cn/news/1583612.html

相关文章

使用python爬取网络资源

整体思路 网络资源爬取通常分为以下几个步骤: 发送 HTTP 请求:使用requests库向目标网站发送请求,获取网页的 HTML 内容。解析 HTML 内容:使用BeautifulSoup库解析 HTML 内容,从中提取所需的数据。处理数据&#xff…

流行病学计算

title: “[R语言] 流行病学计算” date: 2022-12-06 lastmod: 2022-12-06 draft: false tags: [“R语言”,“流行病学”,“统计学”] toc: true autoCollapseToc: true 主要来自结果数据计算 R C 计算卡方 compare<-matrix(c(99,48,29,0,2,3,2,0,0,0,0,11),nr 3) compare…

【学习笔记】大模型架构设计与长上下文能力的实现

大模型架构 Encoder-Decoder 继承自传统的Transformer架构&#xff0c;包含一个编码器encoder&#xff0c;以及一个解码器decoder&#xff0c;这个在之前介绍过 其中&#xff0c;编码器采用的是双向注意力&#xff0c;即每一个元素的attention可以关注所有元素&#xff1b;而…

SpringMVC_day02

一、SSM 整合 核心步骤 依赖管理 包含 SpringMVC、Spring JDBC、MyBatis、Druid 数据源、Jackson 等依赖。注意点&#xff1a;确保版本兼容性&#xff08;如 Spring 5.x 与 MyBatis 3.5.x&#xff09;。 配置类 SpringConfig&#xff1a;扫描 Service 层、启用事务管理、导入…

Oracle数据库服务器地址变更与监听配置修改完整指南

一、前言 在企业IT运维中&#xff0c;Oracle数据库服务器地址变更是常见的运维操作。本文将详细介绍如何安全、高效地完成Oracle数据库服务器地址变更及相关的监听配置修改工作&#xff0c;确保数据库服务在迁移后能够正常运行。 二、准备工作 1. 环境检查 确认新旧服务器I…

基于javaweb的SSM+Maven电脑公司财务管理系统设计与实现(源码+文档+部署讲解)

​ 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、…

vue 封装 Axios菜鸟教程

1、Axios依赖下载 $ npm install axios 2、以下链接为Axios 的api Axios 实例 | Axios中文文档 | Axios中文网 3、 项目新建request.js&#xff0c;文件名称按照驼峰命名法就可以 4、封装request.js代码如下 import axios from "axios"//创建axios实例&#xff0…

QOpenGLWidget视频画面上绘制矩形框

一、QPainter绘制 在QOpenGLWidget中可以绘制,并且和OpenGL的内容叠在一起。paintGL里面绘制完视频后,解锁资源,再用QPainter绘制矩形框。这种方式灵活性最好。 void VideoGLWidget::paintGL() {glClear(GL_COLOR_BUFFER_BIT);m_program.bind();//绘制视频数据// 解绑VAOg…