【Rust 精进之路之第2篇-初体验】安装、配置与 Hello Cargo:踏出 Rust 开发第一步

news2025/4/21 16:51:48

系列: 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 上,安装和管理方式都基本一致。

安装步骤:

  1. 打开你的终端(Terminal)或命令提示符(Command Prompt)。

  2. 访问 Rust 官方网站的安装页面: https://www.rust-lang.org/tools/install

  3. 复制并执行页面上提供的安装命令。

    • 对于 macOS 和 Linux 用户,通常是类似这样的命令 (请以官网为准):
      curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
      
    • 对于 Windows 用户,官网会提供一个 .exe 下载链接,下载后运行即可。安装过程中,通常会推荐你安装 Visual Studio C++ build tools,这是编译 Rust 代码所必需的,请按照提示进行安装。
  4. 按照安装程序的提示进行操作。 通常直接选择默认选项(选项 1)即可。安装程序会自动配置好你的系统环境变量(PATH)。

  5. 安装完成后,根据提示重新打开一个新的终端窗口,或者运行提示中的命令来使环境变量生效。

  6. 验证安装: 在新的终端窗口中输入以下命令:

    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 编译器的“实时反馈”。

配置步骤:

  1. 安装 VS Code: 如果你还没有安装,请前往 VS Code 官网 (https://code.visualstudio.com/) 下载并安装适合你操作系统的版本。
  2. 安装 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 开发体验的核心部分,它极大地简化了项目的构建、管理和协作。

创建你的第一个项目:

  1. 打开终端。

  2. cd 到你希望存放代码的目录下。

  3. 运行以下命令来创建一个名为 hello_rust 的新项目:

    cargo new hello_rust
    
  4. Cargo 会自动为你生成一个目录结构:

    hello_rust/
    ├── Cargo.toml  # 项目的配置文件(清单文件)
    └── src/        # 源代码目录
        └── main.rs # 主程序入口文件
    
    • Cargo.toml: 这是 Cargo 的清单 (Manifest) 文件,采用 TOML 格式。它包含了项目的元数据(如项目名称、版本、作者)和依赖列表。现在你可以打开看看,内容很简单,后面我们会详细了解它。把它想象成项目的“身份证”和“配方单”。
    • src/main.rs: 这是项目的源代码根文件。对于一个可执行程序(像我们这个),main.rs 是程序的入口点。
  5. 进入项目目录:

    cd hello_rust
    
  6. 用 VS Code 打开这个项目:
    在终端里输入 code . (注意有个点,表示当前目录) 并回车,VS Code 就会打开 hello_rust 这个文件夹。

  7. 查看 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 目录下执行:

  1. cargo build:只编译,不运行

    cargo build
    

    Cargo 会调用 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 适合只需要编译检查或者想手动运行产物的场景。
  2. cargo run:编译并立即运行

    cargo run
    

    这是开发中最常用的命令。它会先执行 cargo build 的过程(如果代码有改动或尚未编译),然后立即运行生成的可执行文件。你会直接在终端看到 “Hello, world!” 的输出。一步到位,非常方便。

  3. cargo check:快速检查代码,不生成可执行文件

    cargo check
    

    这个命令非常有用!它会快速检查你的代码,确保它能够通过编译器的语法和类型检查,但它不会花费时间去实际生成可执行文件

    • 优点: 速度比 cargo buildcargo 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 是社区的最佳实践。
  • Q2: 我不喜欢 VS Code,可以用其他编辑器吗?
    • A: 当然可以!很多流行的编辑器都有不错的 Rust 支持,例如:IntelliJ IDEA (配合 Rust 插件), Sublime Text, Vim/Neovim (配合相应插件), Emacs 等。关键是确保你使用的插件提供了良好的 rust-analyzer 集成或类似的代码分析能力。
  • Q3: cargo buildcargo run 有什么本质区别?
    • A: cargo build 只负责编译源代码生成目标文件(比如可执行文件),然后就结束了。cargo run 则是在 build 的基础上,额外帮你把生成的可执行文件运行起来。你可以认为 cargo run = cargo build + run a.out (简化理解)。
  • Q4: 为什么 println! 后面有个感叹号 !
    • A: 这是 Rust 中 宏 (Macro) 调用的标志。宏有点像“代码的代码”,它能在编译时生成或转换代码。println! 是一个非常常用的宏,用于输出信息到控制台。我们后面会有专门的章节深入学习宏,现在你只需要知道带 ! 的通常是宏调用,用法和函数类似即可。

总结:迈出坚实的第一步

今天,我们完成了从零开始搭建 Rust 开发环境的整个过程:

  1. 使用 rustup 安装了 Rust 工具链。
  2. 配置了 VS Code 和 rust-analyzer,为高效编码做好了准备。
  3. 通过 cargo new 创建了标准的 Rust 项目结构。
  4. 理解并运行了第一个 “Hello, world!” 程序。
  5. 初步认识了强大的构建工具和包管理器 Cargo,并掌握了 build, run, check 三个核心命令。

这看似简单的一步,其实是你 Rust 学习旅程中至关重要的基础。一个顺畅的开发环境和对核心工具的基本了解,将为后续更深入的学习扫清障碍。

现在,你的“装备”已经准备就绪,基本的“操作”也已熟悉。在下一篇文章中,我们将正式开始学习 Rust 的核心语法:变量、数据类型以及它们在 Rust 中独特的“哲学”——可变性与遮蔽。准备好迎接更多有趣的知识吧!

继续前进,探索 Rust 的无限可能!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2339554.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

腾讯旗下InstantCharacter框架正式开源 可高度个性化任何角色

目前基于学习的主题定制方法主要依赖于 U-Net 架构,但其泛化能力有限,图像质量也大打折扣。同时,基于优化的方法需要针对特定主题进行微调,这不可避免地会降低文本的可控性。为了应对这些挑战,我们提出了 “即时角色”…

详讲Linux下进程等待

3.进程等待 引言:什么是进程等待 想象有两个小伙伴,一个是 “大强”(父进程 ),一个是 “小强”(子进程 )。大强给小强安排了任务,比如去收集一些石头。 …

JBoss + WildFly 本地开发环境完全指南

JBoss WildFly 本地开发环境完全指南 本篇笔记主要实现在本地通过 docker 创建 JBoss 和 WildFly 服务器这一功能,基于红帽的禁制 EAP 版本的重新分发,所以我这里没办法放 JBoss EAP 的 zip 文件。WildFly 是免费开源的版本,可以在红帽官网找…

【网络原理】TCP协议如何实现可靠传输(确认应答和超时重传机制)

目录 一. TCP协议 二. 确定应答 三. 超时重传 一. TCP协议 1)端口号 源端口号:发送方端口号目的端口号:接收方端口号 16位(2字节)端口号,可以表示的范围(0~65535) 源端口和目的…

【国家能源集团生态协作平台-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

idea中导入从GitHub上克隆下来的springboot项目解决找不到主类的问题

第一步:删除目录下的.idea和target,然后用idea打开 第二步:如果有需要,idea更换jdk版本 原文链接:https://blog.csdn.net/m0_74036731/article/details/146779040 解决方法(idea中解决)&#…

【AI论文】CLIMB:基于聚类的迭代数据混合自举语言模型预训练

摘要:预训练数据集通常是从网络内容中收集的,缺乏固有的领域划分。 例如,像 Common Crawl 这样广泛使用的数据集并不包含明确的领域标签,而手动整理标记数据集(如 The Pile)则是一项劳动密集型工作。 因此&…

Linux操作系统--环境变量

目录 基本概念: 常见环境变量: 查看环境变量的方法: 测试PATH 测试HOME 和环境变量相关的命令 环境变量的组织方式:​编辑 通过代码如何获取环境变量 通过系统调用获取或设置环境变量 环境变量通常具有全局属性 基本概念…

Jenkins 多分支管道

如果您正在寻找一个基于拉取请求或分支的自动化 Jenkins 持续集成和交付 (CI/CD) 流水线,本指南将帮助您全面了解如何使用 Jenkins 多分支流水线实现它。 Jenkins 的多分支流水线是设计 CI/CD 工作流的最佳方式之一,因为它完全基于 git(源代…

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小…

【算法】快速排序、归并排序(非递归版)

目录 一、快速排序&#xff08;非递归&#xff09; 1.原理 2.实现 2.1 stack 2.2 partition(array,left,right) 2.3 pivot - 1 > left 二、归并排序&#xff08;非递归&#xff09; 1.原理 2.实现 2.1 gap 2.1.1 i 2*gap 2.1.2 gap * 2 2.1.3 gap < array.…

【实战中提升自己】内网安全部署之dot1x部署 本地与集成AD域的主流方式(附带MAC认证)

1 dot1x部署【用户名密码认证&#xff0c;也可以解决私接无线AP等功能】 说明&#xff1a;如果一个网络需要通过用户名认证才能访问内网&#xff0c;而认证失败只能访问外网与服务器&#xff0c;可以部署dot1x功能。它能实现的效果是&#xff0c;当内部用户输入正常的…

[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

场景&#xff1a; win11家庭版&#xff0c;edge浏览器 &#xff0c; sqlin靶场 定义&#xff1a; SQL 注入&#xff08;SQL Injection&#xff09;是一种常见的网络安全攻击方式&#xff0c;攻击者通过在 Web 应用程序中输入恶意的 SQL 代码&#xff0c;绕过应用程序的安全机…

[SpringBoot]快速入门搭建springboot

默认有spring基础&#xff0c;不会一行代码一行代码那么细致地讲。 SpringBoot的作用 Spring Boot是为了简化Spring应用的创建、运行、调试、部署等而出现的。就像我们整个SSM框架时&#xff0c;就常常会碰到版本导致包名对不上、Bean非法参数类型的一系列问题&#xff08;原出…

理解.NET Core中的配置Configuration

什么是配置 .NET中的配置&#xff0c;本质上就是key-value键值对&#xff0c;并且key和value都是字符串类型。 在.NET中提供了多种配置提供程序来对不同的配置进行读取、写入、重载等操作&#xff0c;这里我们以为.NET 的源码项目为例&#xff0c;来看下.NET中的配置主要是有…

MYSQL “Too Many Connections“ 错误解决

1.查询当前连接数 show status like "Threads_connected"; 2.查询数据库最大连接数 show variables like "max_connections" 3.查询所有活动连接 show processlist; 4.根据查询结果观察是否有长时间未被释放的连接 参数解释 : 字段说明id连接的唯一…

【外研在线-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…