【Rust 精进之路之第2篇-初体验】安装、配置与 Hello Cargo:踏出 Rust 开发第一步
系列: Rust 精进之路:构建可靠、高效软件的底层逻辑
**作者:**码觉客
发布日期: 2025-04-20
引言:磨刀不误砍柴工,装备先行!
在上一篇文章中,我们一起探索了 Rust 诞生的缘由,理解了它为何能承诺给我们一个既安全又高性能的编程世界。相信你已经对 Rust 的潜力充满了期待,迫不及待想要亲手敲下第一行 Rust 代码了吧?
别急,正所谓“磨刀不误砍柴工”。在正式开始我们的 Rust 编程之旅前,我们需要先准备好一套称手的“兵器”——也就是安装 Rust 开发环境,并配置好能让我们事半功倍的编辑器。这一步至关重要,一个顺畅的开发环境能极大提升我们学习和开发的幸福感。
这篇文章,就是你的“新手装备指南”。我们将手把手带你完成 Rust 的安装,推荐并配置一个强大的代码编辑器,然后创建并运行你的第一个 Rust 程序——经典的 “Hello, world!”。更重要的是,我们还会认识 Rust 生态系统的“大管家”——Cargo,它是你未来项目中不可或缺的得力助手。
准备好了吗?让我们一起动手,为探索 Rust 的奇妙世界打下坚实的基础!
一、神兵利器:安装 Rust 工具链管理器 rustup
安装 Rust 的方式有很多种,但官方强烈推荐使用 rustup 这个工具。把它想象成你的 Rust “武器库管理员”,它不仅能帮你轻松安装 Rust 编译器 (rustc)、包管理器 (cargo)、标准库等核心组件,还能让你方便地管理不同的 Rust 版本(比如稳定版、测试版、开发版),以及安装额外的工具链组件(比如用于交叉编译的目标平台支持)。
为什么一定要用 rustup?
- 省心省力: 一条命令搞定所有核心工具的安装和配置。
- 版本管理: 轻松切换和更新 Rust 版本,保持与时俱进。
- 组件管理: 按需安装额外的编译目标或工具(如
clippy代码检查器、rustfmt格式化工具)。 - 跨平台一致性: 无论你在 Windows, macOS, 还是 Linux 上,安装和管理方式都基本一致。
安装步骤:
-
打开你的终端(Terminal)或命令提示符(Command Prompt)。
-
访问 Rust 官方网站的安装页面: https://www.rust-lang.org/tools/install
-
复制并执行页面上提供的安装命令。
- 对于 macOS 和 Linux 用户,通常是类似这样的命令 (请以官网为准):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - 对于 Windows 用户,官网会提供一个
.exe下载链接,下载后运行即可。安装过程中,通常会推荐你安装 Visual Studio C++ build tools,这是编译 Rust 代码所必需的,请按照提示进行安装。
- 对于 macOS 和 Linux 用户,通常是类似这样的命令 (请以官网为准):
-
按照安装程序的提示进行操作。 通常直接选择默认选项(选项 1)即可。安装程序会自动配置好你的系统环境变量(PATH)。
-
安装完成后,根据提示重新打开一个新的终端窗口,或者运行提示中的命令来使环境变量生效。
-
验证安装: 在新的终端窗口中输入以下命令:
rustc --version cargo --version如果能看到类似
rustc x.y.z (hash date)和cargo x.y.z (hash date)的输出(版本号可能不同),如下图所示,那么恭喜你,Rust 环境已经成功安装!

小提示:
rustup会默认安装 stable(稳定)版本的 Rust。对于学习和大多数开发来说,稳定版是最佳选择。- 以后想更新 Rust 到最新稳定版,只需在终端运行
rustup update即可。
二、利刃出鞘:配置你的代码编辑器 (VS Code + rust-analyzer)
有了 Rust 工具链,我们还需要一个强大的代码编辑器来提升编码体验。虽然理论上你可以用任何文本编辑器写 Rust 代码,但一个配置了良好 Rust 支持的现代编辑器能提供语法高亮、代码补全、实时错误检查、代码跳转、重构等诸多便利功能,极大提高你的开发效率和代码质量。
目前,Visual Studio Code (VS Code) 配合 rust-analyzer 扩展是 Rust 社区最流行、也是官方推荐的组合。
为什么推荐这个组合?
- VS Code: 免费、开源、跨平台,拥有庞大的扩展生态系统。
rust-analyzer: 由 Rust 官方团队维护,提供极其快速和准确的代码分析、补全、错误提示、类型推断显示、代码跳转、重构支持等。它能让你在写代码的时候就感受到 Rust 编译器的“实时反馈”。
配置步骤:
- 安装 VS Code: 如果你还没有安装,请前往 VS Code 官网 (https://code.visualstudio.com/) 下载并安装适合你操作系统的版本。
- 安装
rust-analyzer扩展:- 打开 VS Code。
- 点击侧边栏的“扩展”图标(像四个方块的那个)。
- 在搜索框中输入
rust-analyzer。 - 找到官方发布的
rust-analyzer扩展 (通常是第一个,发布者显示为rust-lang)。 - 点击“安装”按钮。
安装完成后,rust-analyzer 会在后台自动工作。当你打开 Rust 项目(.rs 文件)时,它就会开始分析代码,并提供各种智能提示。你马上就能体验到它的强大之处!
注意: 如果你之前安装过其他的 Rust 扩展(比如旧的 RustyCode),建议禁用或卸载它们,以避免冲突。
三、开工大吉:你的第一个 Rust 项目 “Hello, world!” 与 Cargo 初识
装备齐全,是时候建造我们的第一个“作品”了!在 Rust 的世界里,我们不推荐直接创建一个孤零零的 .rs 文件然后用 rustc 手动编译。标准的做法是使用 Rust 的构建系统和包管理器——Cargo 来创建和管理项目。
Cargo 是什么? 把它想象成你项目的“总工程师”兼“后勤部长”。它负责:
- 创建项目骨架: 一条命令生成标准的项目目录结构。
- 构建代码: 调用
rustc编译器将你的源代码编译成可执行文件或库。 - 管理依赖: 帮你下载并链接项目所需的第三方库(称为 “crates”)。
- 运行项目: 方便地编译并执行你的程序。
- 运行测试: 集成测试框架,方便你编写和运行测试用例。
- 发布库: 将你写的库发布到 Rust 的中央仓库 crates.io,供他人使用。
- 还有更多…
总之,Cargo 是 Rust 开发体验的核心部分,它极大地简化了项目的构建、管理和协作。
创建你的第一个项目:
-
打开终端。
-
cd到你希望存放代码的目录下。 -
运行以下命令来创建一个名为
hello_rust的新项目:cargo new hello_rust -
Cargo 会自动为你生成一个目录结构:
hello_rust/ ├── Cargo.toml # 项目的配置文件(清单文件) └── src/ # 源代码目录└── main.rs # 主程序入口文件Cargo.toml: 这是 Cargo 的清单 (Manifest) 文件,采用 TOML 格式。它包含了项目的元数据(如项目名称、版本、作者)和依赖列表。现在你可以打开看看,内容很简单,后面我们会详细了解它。把它想象成项目的“身份证”和“配方单”。src/main.rs: 这是项目的源代码根文件。对于一个可执行程序(像我们这个),main.rs是程序的入口点。
-
进入项目目录:
cd hello_rust -
用 VS Code 打开这个项目:
在终端里输入code .(注意有个点,表示当前目录) 并回车,VS Code 就会打开hello_rust这个文件夹。 -
查看
src/main.rs文件:
打开src/main.rs,你会看到 Cargo 已经为我们生成了经典的代码:// main 函数是每个可执行 Rust 程序的入口点 fn main() {// println! 是一个宏 (macro),用于将文本打印到控制台// 注意有个感叹号 "!",这表明它是一个宏调用,而不是普通的函数调用// 我们后面会详细学习宏println!("Hello, world!"); }是不是很简单?
fn main()定义了一个名为main的函数,它是程序的起点。println!("Hello, world!");这行代码调用了println!宏,把字符串 “Hello, world!” 输出到屏幕上。
运行你的第一个程序:
现在,激动人心的时刻到了!我们有三种常用的方式来编译和运行这个程序,都在终端的 hello_rust 目录下执行:
-
cargo build:只编译,不运行cargo buildCargo 会调用
rustc编译器,将src/main.rs编译成可执行文件。- 编译成功后,你会在项目根目录下发现一个
target目录。编译产物默认放在target/debug/目录下(因为是调试构建)。你可以找到一个名为hello_rust(或hello_rust.exe在 Windows 上) 的可执行文件。 - 你可以直接运行这个文件:在 Linux/macOS 上是
./target/debug/hello_rust,在 Windows 上是.\target\debug\hello_rust.exe。你会看到输出 “Hello, world!”。 cargo build适合只需要编译检查或者想手动运行产物的场景。
- 编译成功后,你会在项目根目录下发现一个
-
cargo run:编译并立即运行cargo run这是开发中最常用的命令。它会先执行
cargo build的过程(如果代码有改动或尚未编译),然后立即运行生成的可执行文件。你会直接在终端看到 “Hello, world!” 的输出。一步到位,非常方便。 -
cargo check:快速检查代码,不生成可执行文件cargo check这个命令非常有用!它会快速检查你的代码,确保它能够通过编译器的语法和类型检查,但它不会花费时间去实际生成可执行文件。
- 优点: 速度比
cargo build或cargo run快得多! - 用途: 在你编码过程中,可以频繁运行
cargo check来快速验证代码的正确性,获得即时反馈,就像代码的“拼写检查”一样。
- 优点: 速度比
恭喜你!你已经成功安装了 Rust 环境,配置了编辑器,并使用 Cargo 创建、编译、运行了你的第一个 Rust 程序!
四、初窥门径:Cargo 的冰山一角
我们今天只是简单接触了 cargo new, build, run, check 这几个基本命令,但这仅仅是 Cargo 强大功能的冰山一角。在后续的学习中,我们会逐渐解锁 Cargo 的更多技能,比如:
- 添加和管理第三方库依赖(
dependencies) - 运行单元测试和集成测试(
cargo test) - 生成文档(
cargo doc) - 构建发布版本(
cargo build --release) - 将你的库发布到 crates.io(
cargo publish)
可以说,掌握 Cargo 是成为一名合格 Rust 开发者的必经之路。
五、常见问题解答 (FAQ)
- Q1: 我可以不用
rustup,直接去官网下载安装包吗?- A: 技术上可以,但强烈不推荐。
rustup提供了无缝的版本管理和组件管理能力,这对于长期开发和跟进 Rust 的快速迭代至关重要。使用rustup是社区的最佳实践。
- A: 技术上可以,但强烈不推荐。
- Q2: 我不喜欢 VS Code,可以用其他编辑器吗?
- A: 当然可以!很多流行的编辑器都有不错的 Rust 支持,例如:IntelliJ IDEA (配合 Rust 插件), Sublime Text, Vim/Neovim (配合相应插件), Emacs 等。关键是确保你使用的插件提供了良好的
rust-analyzer集成或类似的代码分析能力。
- A: 当然可以!很多流行的编辑器都有不错的 Rust 支持,例如:IntelliJ IDEA (配合 Rust 插件), Sublime Text, Vim/Neovim (配合相应插件), Emacs 等。关键是确保你使用的插件提供了良好的
- Q3:
cargo build和cargo run有什么本质区别?- A:
cargo build只负责编译源代码生成目标文件(比如可执行文件),然后就结束了。cargo run则是在build的基础上,额外帮你把生成的可执行文件运行起来。你可以认为cargo run = cargo build + run a.out(简化理解)。
- A:
- Q4: 为什么
println!后面有个感叹号!?- A: 这是 Rust 中 宏 (Macro) 调用的标志。宏有点像“代码的代码”,它能在编译时生成或转换代码。
println!是一个非常常用的宏,用于输出信息到控制台。我们后面会有专门的章节深入学习宏,现在你只需要知道带!的通常是宏调用,用法和函数类似即可。
- A: 这是 Rust 中 宏 (Macro) 调用的标志。宏有点像“代码的代码”,它能在编译时生成或转换代码。
总结:迈出坚实的第一步
今天,我们完成了从零开始搭建 Rust 开发环境的整个过程:
- 使用
rustup安装了 Rust 工具链。 - 配置了 VS Code 和
rust-analyzer,为高效编码做好了准备。 - 通过
cargo new创建了标准的 Rust 项目结构。 - 理解并运行了第一个 “Hello, world!” 程序。
- 初步认识了强大的构建工具和包管理器 Cargo,并掌握了
build,run,check三个核心命令。
这看似简单的一步,其实是你 Rust 学习旅程中至关重要的基础。一个顺畅的开发环境和对核心工具的基本了解,将为后续更深入的学习扫清障碍。
现在,你的“装备”已经准备就绪,基本的“操作”也已熟悉。在下一篇文章中,我们将正式开始学习 Rust 的核心语法:变量、数据类型以及它们在 Rust 中独特的“哲学”——可变性与遮蔽。准备好迎接更多有趣的知识吧!
继续前进,探索 Rust 的无限可能!
相关文章:
【Rust 精进之路之第2篇-初体验】安装、配置与 Hello Cargo:踏出 Rust 开发第一步
系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 **作者:**码觉客 发布日期: 2025-04-20 引言:磨刀不误砍柴工,装备先行! 在上一篇文章中,我们一起探索了 Rust 诞生的缘由&…...
洛谷题目:P7775 [COCI 2009/2010 #2] VUK 题解 (本题简)
题目传送门: P7775 [COCI 2009/2010 #2] VUK - 洛谷 (luogu.com.cn) 前言: 这道题的核心目标是找出狼从起点 V 到终点 J 的路径,使得狼在途中离它最近的树的距离的最小值最大。下面为大家详细讲解: #整体思路概述: 这道题我们可以采用“先计算距离,再来二分查找”的…...
腾讯旗下InstantCharacter框架正式开源 可高度个性化任何角色
目前基于学习的主题定制方法主要依赖于 U-Net 架构,但其泛化能力有限,图像质量也大打折扣。同时,基于优化的方法需要针对特定主题进行微调,这不可避免地会降低文本的可控性。为了应对这些挑战,我们提出了 “即时角色”…...
Python爬虫实战:获取fenbi网最新备考资讯
一、引言 1.1 研究背景 伴随互联网技术的迅猛发展,在线教育平台积累了海量备考数据。以粉某网为例,其备考数据涵盖考试资讯、备考资料、用户评价等,对备考者意义重大。然而,获取并分析这些数据颇具挑战,需借助先进的爬虫技术和数据分析方法。 1.2 研究目的 本研究旨在…...
详讲Linux下进程等待
3.进程等待 引言:什么是进程等待 想象有两个小伙伴,一个是 “大强”(父进程 ),一个是 “小强”(子进程 )。大强给小强安排了任务,比如去收集一些石头。 …...
JBoss + WildFly 本地开发环境完全指南
JBoss WildFly 本地开发环境完全指南 本篇笔记主要实现在本地通过 docker 创建 JBoss 和 WildFly 服务器这一功能,基于红帽的禁制 EAP 版本的重新分发,所以我这里没办法放 JBoss EAP 的 zip 文件。WildFly 是免费开源的版本,可以在红帽官网找…...
【网络原理】TCP协议如何实现可靠传输(确认应答和超时重传机制)
目录 一. TCP协议 二. 确定应答 三. 超时重传 一. TCP协议 1)端口号 源端口号:发送方端口号目的端口号:接收方端口号 16位(2字节)端口号,可以表示的范围(0~65535) 源端口和目的…...
【国家能源集团生态协作平台-注册/登录安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...
Java表达式1.0
Java开发工具 在当今的Java开发领域,IntelliJ IDEA已然成为了众多开发者心目中的首选利器,它被广泛认为是目前Java开发效率最快的IDE工具。这款备受瞩目的开发工具是由JetBrains公司精心打造的,而JetBrains公司总部位于风景如画的捷克共和国首…...
idea中导入从GitHub上克隆下来的springboot项目解决找不到主类的问题
第一步:删除目录下的.idea和target,然后用idea打开 第二步:如果有需要,idea更换jdk版本 原文链接:https://blog.csdn.net/m0_74036731/article/details/146779040 解决方法(idea中解决)&#…...
Android音视频开发
Android Framework 与音视频技术深度解析 一、Android音视频架构全景 ▶ 四层架构协同┌──────────────┐│ 应用层 │ ▶ MediaPlayer/ExoPlayer/Camera2 API调用└──────┬───────┘┌──────▼───────┐│ 框架层 │…...
【AI论文】CLIMB:基于聚类的迭代数据混合自举语言模型预训练
摘要:预训练数据集通常是从网络内容中收集的,缺乏固有的领域划分。 例如,像 Common Crawl 这样广泛使用的数据集并不包含明确的领域标签,而手动整理标记数据集(如 The Pile)则是一项劳动密集型工作。 因此&…...
Linux操作系统--环境变量
目录 基本概念: 常见环境变量: 查看环境变量的方法: 测试PATH 测试HOME 和环境变量相关的命令 环境变量的组织方式:编辑 通过代码如何获取环境变量 通过系统调用获取或设置环境变量 环境变量通常具有全局属性 基本概念…...
Jenkins 多分支管道
如果您正在寻找一个基于拉取请求或分支的自动化 Jenkins 持续集成和交付 (CI/CD) 流水线,本指南将帮助您全面了解如何使用 Jenkins 多分支流水线实现它。 Jenkins 的多分支流水线是设计 CI/CD 工作流的最佳方式之一,因为它完全基于 git(源代…...
精益数据分析(9/126):如何筛选创业路上的关键数据指标
精益数据分析(9/126):如何筛选创业路上的关键数据指标 大家好!在创业的漫漫长路中,数据就像一盏明灯,指引着我们前行的方向。但要让这盏灯发挥作用,关键在于找到那些真正有价值的数据指标。今天…...
C语言之图像文件的属性
🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 图像文件属性提取系统设计与实现 目录 设计题目设计内容系统分析总体设计详细设计程序实现…...
LeetCode hot 100—分割等和子集
题目 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 示例 1: 输入:nums [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5, 5] 和 [11] 。…...
高等数学同步测试卷 同济7版 试卷部分 上 做题记录 上册期中同步测试卷 B卷
上册期中同步测试卷 B卷 一、单项选择题(本大题共5小题,每小题3分,总计15分) 1. 2. 3. 4. 5. 由f(2/n), n→∞可知 2/n→0, 即x→0. 二、填空题(本大题共5小题,每小题3分,总计15分) 6. 7. 8. 9. 10. 三、求解下列各题(本大题共5小…...
【算法】快速排序、归并排序(非递归版)
目录 一、快速排序(非递归) 1.原理 2.实现 2.1 stack 2.2 partition(array,left,right) 2.3 pivot - 1 > left 二、归并排序(非递归) 1.原理 2.实现 2.1 gap 2.1.1 i 2*gap 2.1.2 gap * 2 2.1.3 gap < array.…...
python-将文本生成音频
将文本生成音频通常需要结合 文本转语音(TTS,Text-to-Speech) 工具或库来实现,比如 Google TTS (gtts)、Amazon Polly、Microsoft Azure TTS 等。 一、使用 Google TTS (gtts) 将文本生成音频 gtts 是一个简单易用的 Python 库&a…...
[王阳明代数讲义]语言模型核心代码调研
语言模型核心代码调研 基于Consciciteation的才气张量持续思考综述将文本生成建模为才气张量网络扩散过程,实现非自回归推理通过才气张量的群-拓扑流形交叉注意力实现多模态推理,将输入压缩到低维空间持续迭代提出「条件计算提前终止」机制,…...
4月19日记(补)算了和周日一块写了 4月20日日记
周六啊 昨天晚上又玩的太嗨了。睡觉的时候有点晚了,眼睛疼就没写日记。现在补上 实际上现在是20号晚上八点半了。理论上来说应该写今天的日记。 周六上午打比赛啦,和研究生,输了,我是替补没上场。没关系再练一练明天就可以变强…...
trivy开源安全漏洞扫描器——筑梦之路
开源地址:https://github.com/aquasecurity/trivy.git 可扫描的对象 容器镜像文件系统Git存储库(远程)虚拟机镜像Kubernetes 在容器镜像安全方面使用广泛,其他使用相对较少。 能够发现的问题 正在使用的操作系统包和软件依赖项…...
【实战中提升自己】内网安全部署之dot1x部署 本地与集成AD域的主流方式(附带MAC认证)
1 dot1x部署【用户名密码认证,也可以解决私接无线AP等功能】 说明:如果一个网络需要通过用户名认证才能访问内网,而认证失败只能访问外网与服务器,可以部署dot1x功能。它能实现的效果是,当内部用户输入正常的…...
[matlab]南海地形眩晕图代码
[matlab]南海地形眩晕图代码 请ChatGPT帮写个南海地形眩晕图代码 图片 图片 代码 .rtcContent { padding: 30px; } .lineNode {font-size: 12pt; font-family: "Times New Roman", Menlo, Monaco, Consolas, "Courier New", monospace; font-style: n…...
Web安全和渗透测试--day6--sql注入--part 1
场景: win11家庭版,edge浏览器 , sqlin靶场 定义: SQL 注入(SQL Injection)是一种常见的网络安全攻击方式,攻击者通过在 Web 应用程序中输入恶意的 SQL 代码,绕过应用程序的安全机…...
大模型在胆管结石(无胆管炎或胆囊炎)预测及治疗方案制定中的应用研究
目录 一、引言 1.1 研究背景与意义 1.2 研究目的 1.3 国内外研究现状 二、胆管结石相关理论基础 2.1 胆管结石概述 2.2 临床表现与诊断方法 2.3 传统治疗方法 三、大模型技术原理与应用优势 3.1 大模型基本原理 3.2 在医疗领域的应用潜力 3.3 用于胆管结石预测的可…...
MIT6.S081-lab4
MIT6.S081-lab4 注:本篇lab的前置知识在《MIT6.S081-lab3前置》 1. RISC-V assembly 第一个问题 Which registers contain arguments to functions? For example, which register holds 13 in main’s call to printf? 我们先来看看main干了什么: …...
精通 Spring Cache + Redis:避坑指南与最佳实践
Spring Cache 以其优雅的注解方式,极大地简化了 Java 应用中缓存逻辑的实现。结合高性能的内存数据库 Redis,我们可以轻松构建出响应迅速、扩展性强的应用程序。然而,在享受便捷的同时,一些常见的“坑”和被忽视的最佳实践可能会悄…...
[SpringBoot]快速入门搭建springboot
默认有spring基础,不会一行代码一行代码那么细致地讲。 SpringBoot的作用 Spring Boot是为了简化Spring应用的创建、运行、调试、部署等而出现的。就像我们整个SSM框架时,就常常会碰到版本导致包名对不上、Bean非法参数类型的一系列问题(原出…...
