Rust 学习笔记 - Hello world

前言

本文将讲解如何完成一个 Rust 项目的开发流程,从编写 "Hello, World!" 开始,到使用 Cargo 管理和运行项目。

编写 Hello world

开始一个新项目很简单,首先,创建一个包含 main.rs 文件的 hello_world 文件夹,并在 main.rs 文件中添加如下代码:

rust 复制代码
fn main() {
    println!("Hello, world!");
}

简单说明一下代码:

  1. fn main() { ... }:
    • fn 关键字用于声明一个新的函数,这里声明了一个名为 main 的函数。
    • main 函数是项目的入口函数,每个可执行的 Rust 程序都必须包含一个 main 函数。
    • 大括号 {} 包围着函数的主体内容。
  2. println!("Hello, world!");:
    • 这行代码调用了 Rust 的 println! 宏。
    • 宏是 Rust 中一种特殊的、可用于生成代码的工具。
    • 在这个场景中,println! 宏用于向程序的标准输出打印一行字符串。
    • 字符串 "Hello, world!" 被包括在双引号中,并在终端或命令行界面打印出来。
    • 注意宏的末尾有一个感叹号 !,这是 Rust 用于区分函数和宏的方法。

编译代码

通过 rustc 编译单个文件:

sh 复制代码
rustc main.rs

编译成功后,会生成一个同名的可执行文件:

通过 ./main 运行可执行文件,将在控制台看到 "Hello, world!"。

Cargo 项目

使用 rustc 直接编译是手动过程,主要用于编译单个 Rust 源文件,仅当项目很小且没有复杂依赖时适用。cargo 是 Rust 官方推荐的项目管理工具,它可以自动处理复杂的编译任务,包括依赖管理、编译、测试等,适用于任何规模的项目,并且提供了一致的项目结构和构建过程,所以,我们通常使用 Cargo 管理项目。

初始化项目

用以下命令创建一个标准的 Rust 项目结构:

sh 复制代码
cargo new hello_world

项目目录

text 复制代码
hello_world/
.
├── .git
├── .gitignore
├── Cargo.toml       # 描述项目的配置文件,包括项目信息和依赖信息
└── src
    └── main.rs      # 项目代码的入口文件

编写代码

在 Rust 项目中,通常 main.rs 是的主入口文件。当创建一个可执行的 Rust 项目(也称为 binary crate)时,Cargo 默认会设置 main.rs 作为项目入口。main.rs 通常包含 main 函数,它是程序执行的入口。

我们打开 src/main.rs 文件,默认会有一段 "Hello world" 代码:

rust 复制代码
fn main() {
    println!("Hello, world!");
}

编译代码

当通过命令行运行 cargo build 命令来编译 Rust 项目时,Cargo 会执行一系列操作来编译你的代码,并生成编译结果。

sh 复制代码
cargo build

编译结束后,Cargo 会提供反馈,告知编译是否成功,以及相关信息。

编译成功

如果编译成功,通常会看到类似这样的输出:

这表示项目成功编译,没有出现错误。编译后的会生成可执行文件, 通常位于项目目录下的 target/debug/ 目录中。例如本项目名称是 hello_world,编译后的文件就叫做 hello_world(在 Windows 上是 hello_world.exe)。

text 复制代码
target
├── CACHEDIR.TAG
└── debug
    ├── build
    ├── deps
    ├── examples
    ├── hello_world        # 类 Unix 操作系统可执行文件
    ├── hello_world.d
    └── incremental

运行编译文件

  • 在类 Unix 系统中,直接通过命令行运行即可
  • 在 windows 系统中,双击 hello_world.exe 运行即可

编译错误

如果源码有错误,cargo build 会中止编译过程,并显示错误信息。错误信息会标明出错的文件和行号,以及错误的类型和可能的解释。

在这个例子中,Rust 编译器告诉你 main.rs 文件的第 2 行有一个类型不匹配的错误。

编译警告

如果代码中存在一些潜在的隐患问题,编译器会输出警告信息,但不会中止编译。

这个警告告诉你有一个未使用的变量 x

运行代码

通过 cargo run 命令可以立即执行编译后的可执行文件,简化了 cargo build 与运行可执行文件这一流程。

结语

至此,一个简单的 "Hello World" 的示例已经讲解完成,本篇主要需要掌握的就是通过 Cargo 可以创建项目与运行项目。

相关推荐
蚂蚁背大象1 小时前
Rust 所有权系统是为了解决什么问题
后端·rust
布列瑟农的星空2 小时前
前端都能看懂的rust入门教程(五)—— 所有权
rust
子玖3 小时前
go实现通过ip解析城市
后端·go
Java不加班3 小时前
Java 后端定时任务实现方案与工程化指南
后端
心在飞扬3 小时前
RAG 进阶检索学习笔记
后端
Moment3 小时前
想要长期陪伴你的助理?先从部署一个 OpenClaw 开始 😍😍😍
前端·后端·github
Das1_3 小时前
【Golang 数据结构】Slice 底层机制
后端·go
得物技术3 小时前
深入剖析Spark UI界面:参数与界面详解|得物技术
大数据·后端·spark
古时的风筝3 小时前
花10 分钟时间,把终端改造成“生产力武器”:Ghostty + Yazi + Lazygit 配置全流程
前端·后端·程序员