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

环境搭建与第一个程序:Hello, Rust!

《环境搭建与第一个程序:Hello, Rust!》

引言:从理论到实践的第一步

在上一篇文章《Rust之旅的起点:为什么选择Rust?》中,我们深入探讨了Rust在性能、安全与生产力方面带来的革命性突破。理论的魅力固然引人入胜,但真正的掌握始于实践。任何一门编程语言的学习,都离不开亲手搭建环境、编写并运行第一个程序。这个过程不仅是技术上的“破冰”,更是建立信心、感受语言特性的关键一步。

本文将作为您踏上Rust实践之旅的向导,手把手带您完成以下核心任务:

  1. 安装Rust工具链:我们将使用官方推荐的工具rustup来安装和管理Rust版本,确保您拥有一个稳定、标准的开发环境。
  2. 编写并运行您的第一个Rust程序:我们将通过经典的“Hello, world!”程序,了解Rust程序的基本结构和编译过程。
  3. 拥抱Cargo:我们将初步接触Rust的构建系统与包管理器Cargo,理解为什么它是Rust开发体验中不可或缺的一环,并使用它来创建和管理项目。

完成本文的学习后,您将拥有一个功能完备的Rust开发环境,并成功编译、运行了您的第一个Rust项目,为后续更深入的学习奠定坚实的基础。


一、 安装Rust:通过rustup一统江湖

与其他语言可能存在的繁琐、多样的安装方式不同,Rust社区提供了一个统一且极其强大的工具链管理器——rustup。它不仅负责安装Rust编译器rustc,还捆绑了构建工具Cargo、标准库文档rust-docs等一系列开发必备组件。更重要的是,rustup可以轻松地管理多个Rust版本(如stable、beta、nightly),并在它们之间自由切换,这对于需要测试不同版本特性的开发者来说极为便利。

安装步骤

安装rustup的过程非常简单,通常只需一条命令即可。

对于macOS、Linux或其他类Unix系统:

打开您的终端,然后运行以下命令。它会从官方服务器下载一个脚本并执行,引导您完成安装过程。

# ---
# Command: Shell script execution
# Platform: macOS, Linux
# Rust Version: N/A (Installer)
# ---
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

脚本会向您解释它将要做什么,并请求您的确认。通常,直接选择默认选项(按Enter键)即可。安装程序会自动配置您的PATH环境变量,以便在任何终端窗口中都能直接调用rustccargo等命令。

安装完成后,您可能需要重启终端或执行脚本提示的source $HOME/.cargo/env命令,以使PATH更改生效。

对于Windows系统:

Windows用户需要从rustup.rs官方网站下载并运行rustup-init.exe。它会提供一个图形化的安装向导。

在安装过程中,它会提示您需要安装“Microsoft C++ Build Tools”。这是因为Rust在Windows上依赖于Visual Studio的链接器(linker)来生成最终的可执行文件。rustup-init.exe会尝试为您自动安装这些依赖。如果自动安装失败,您需要手动从微软官网下载并安装“Visual Studio Build Tools”,并确保勾选了“C++ build tools”工作负载。

同样,选择默认安装选项通常是最佳选择。

验证安装

安装成功后,打开一个新的终端窗口,执行以下命令来验证Rust编译器和Cargo是否已正确安装并处于可用状态:

# ---
# Command: Version check
# Platform: Windows, macOS, Linux
# Rust Version: Any
# ---
rustc --version
cargo --version

如果一切顺利,您将看到类似下面的输出,显示了已安装的rustccargo的版本号以及发布日期:

rustc 1.73.0 (cc66ad468 2023-10-03)
cargo 1.73.0 (cc66ad468 2023-10-03)

管理您的Rust版本

rustup的强大之处在于版本管理。以下是几个常用命令:

  • rustup update:检查并更新您当前安装的工具链到最新的稳定版本。建议定期执行此命令。
  • rustup show:显示当前已安装和活动的工具链信息。
  • rustup doc:在您的本地浏览器中打开完整的、可离线访问的Rust官方文档。这是一个非常有用的功能!

至此,您的Rust开发环境已经准备就绪。


二、 第一个程序:经典的“Hello, world!”

按照编程界的传统,我们将通过编写一个在屏幕上打印“Hello, world!”的程序来开始我们的Rust编码之旅。我们将首先采用最原始的方式——直接调用编译器,来理解其背后的基本原理。

1. 创建源文件

首先,创建一个名为main.rs的文件。.rs是Rust源文件的标准扩展名。您可以使用任何文本编辑器来编写代码。

2. 编写代码

main.rs文件中,输入以下代码:

// ---
// File: main.rs
// Cargo.toml: N/A
// Rust Version: 1.73.0
// ---
fn main() {println!("Hello, world!");
}

让我们对这段简短的代码进行初步的剖析:

  • fn main() { ... }:这定义了一个名为main的函数。main函数非常特殊,它总是Rust可执行程序最先运行的代码,是程序的入口点。fn是声明函数的关键字。
  • println!("Hello, world!");:这行代码完成了程序的主要工作。
    • println!是一个宏(macro),而不是一个普通的函数。在Rust中,以!结尾的调用都表示宏调用。宏是一种元编程能力,即“编写代码的代码”。我们将在后续章节深入学习宏,现在您只需知道println!负责将文本打印到控制台。
    • "Hello, world!"是一个字符串字面量,作为参数传递给println!宏。
    • 这行代码以分号;结尾,表示一个表达式的结束。

3. 编译和运行

现在,打开终端,确保您位于main.rs文件所在的目录,然后执行以下命令来编译程序:

# ---
# Command: Manual compilation
# Platform: Windows, macOS, Linux
# Rust Version: 1.73.0
# ---
rustc main.rs

rustc是Rust的编译器。如果代码没有错误,它会生成一个与源文件同名的可执行文件。

  • 在Linux或macOS上,这个文件名为main
  • 在Windows上,这个文件名为main.exe

现在,您可以运行这个程序了:

  • 在Linux或macOS上:./main
  • 在Windows上:.\main.exe

执行后,您应该会在终端上看到输出:

Hello, world!

恭喜!您已经成功地手动编译并运行了您的第一个Rust程序。这个过程帮助我们理解了rustc编译器的基本作用。然而,在实际项目中,我们几乎从不直接调用rustc


三、 拥抱Cargo:更专业的项目管理

随着项目变得复杂,您需要管理依赖、设置不同的编译配置(如开发版和发布版)、运行测试等。手动调用rustc会变得极其繁琐。为此,Rust提供了Cargo,一个集项目创建、依赖管理、构建、测试、发布于一体的强大工具。

让我们用Cargo的方式重做“Hello, world!”项目。

1. 创建项目

在终端中,执行以下命令:

# ---
# Command: Create a new Cargo project
# Platform: Windows, macOS, Linux
# Rust Version: Any
# ---
cargo new hello_cargo

Cargo会创建一个名为hello_cargo的目录,并为其生成一个标准化的项目结构:

hello_cargo
├── .git
├── .gitignore
├── Cargo.toml
└── src└── main.rs
  • Cargo.toml:这是Cargo的清单文件(manifest),采用TOML格式。它包含了项目的所有元数据和依赖项信息。
  • src/main.rs:Cargo将所有源文件放在src目录下,并为您生成了一个包含“Hello, world!”的main.rs模板。
  • .git/.gitignore:Cargo默认会为您初始化一个新的Git仓库,并提供一个合适的.gitignore文件,这体现了Rust对版本控制的重视。

2. Cargo.toml文件详解

让我们看看Cargo.toml的内容:

# ---
# File: hello_cargo/Cargo.toml
# ---
[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2021"[dependencies]
  • [package]部分包含了项目的基本信息:
    • name:包(crate)的名称。
    • version:包的版本号,遵循语义化版本(SemVer)规范。
    • edition:要使用的Rust“版本纪元”(Edition)。2021是目前最新的版本纪元,它允许Rust在不破坏旧代码的情况下引入新的语言特性。
  • [dependencies]部分用于声明项目所依赖的外部库(crates)。目前为空。

3. 构建和运行Cargo项目

现在,进入新创建的hello_cargo目录:

cd hello_cargo

您可以使用以下Cargo命令来构建和运行项目:

  • 构建项目

    # ---
    # Command: Build a Cargo project
    # ---
    cargo build
    

    这个命令会调用rustc进行编译,并将所有输出文件(包括可执行文件)放在target/debug/目录下。它还会生成一个Cargo.lock文件,用于锁定依赖项的精确版本,确保构建的可复现性。

  • 运行项目

    # ---
    # Command: Run a Cargo project
    # ---
    cargo run
    

    cargo run是一个便捷的命令,它会先编译代码(如果需要的话),然后直接运行生成的可执行文件。您会再次看到“Hello, world!”的输出。

  • 快速检查代码

    # ---
    # Command: Check a Cargo project
    # ---
    cargo check
    

    cargo check会快速检查代码以确保它可以通过编译,但不会生成任何可执行文件。这个过程比cargo build快得多,非常适合在开发过程中频繁地检查代码的正确性。

  • 为发布而构建

    # ---
    # Command: Build for release
    # ---
    cargo build --release
    

    当您准备发布程序时,使用--release标志。Cargo会对代码进行大量的优化,生成的可执行文件性能会高得多,编译时间也会更长。输出文件将位于target/release/目录下。

结论:坚实的第一步

在本文中,我们完成了从零开始搭建Rust开发环境,到编写、编译并运行第一个程序的整个过程。我们不仅学会了如何使用rustup来安装和管理Rust工具链,还亲手体验了直接使用rustc编译器和使用Cargo管理项目的区别。

现在,您应该深刻地体会到Cargo为Rust开发流程带来的巨大便利性和规范性。它将是您未来Rust编程旅程中最忠实的伙伴。

您已经迈出了坚实的第一步。您的机器上已经拥有了探索Rust世界所需的一切工具。在下一篇文章中,我们将深入剖C析Cargo的更多功能,学习如何管理依赖、配置项目,并真正发挥出其作为Rust生态系统核心的强大威力。准备好进入更广阔的Rust世界吧!

http://www.dtcms.com/a/553512.html

相关文章:

  • [论文阅读] AI | 大语言模型服务系统服务级目标和系统级指标优化研究
  • 帝国网站管理系统视频教程asp网站开发
  • 自己做的网站申请软著物联网是干嘛的
  • 企业形象破局指南——缺乏专业线上展示?官网SEO优化重构品牌信任
  • webgl 变换矩阵:旋转、平移、缩放
  • 怎么做婚介网站襄阳php网站开发
  • 网站建设规划书案例济南做网站互联网公司有哪些
  • float为什么会丢失精度?
  • 网站产品后台界面怎么做微信朋友圈广告推广
  • 香港科技大学广州|可持续能源与环境学域博士招生宣讲会—吉林大学专场
  • LaTeX 重点表格文字对不齐(有些列文字和其他列差一行才显示)的原因和解决办法
  • 网站推广必做百度云打开的wordpress
  • soular零基础学习,如何统一管理TikLab帐号体系
  • kanass零基础学习:创建第一个项目
  • 【C语言实战(66)】筑牢防线:C语言安全编码之输入与错误处理
  • 【机器学习11】决策树进阶、随机森林、XGBoost、模型对比
  • 唯品会 一家专门做特卖的网站做振动盘的企业网站
  • 我的WordPress网站锦州网站建设市场
  • Spring Boot 3.3新特性全解析
  • 剪映蒙版模糊去水印全攻略:静态/动态水印
  • PandaCoder 2.4.3 震撼发布!
  • LeetCode 分类刷题:445. 两数相加 II
  • 使用Docker搭建Swagger接口文档工具
  • 团队氛围建设 网站网站开发合同 深圳思
  • 机器学习第二阶段
  • 深圳网站建设单位如何在淘宝网做自己的网站
  • Python中正则表达式(re 模块)详解使用(1)原理篇
  • 给运维插上 AI 的翅膀:我的 Dify AIOps 探索之旅
  • aspcms建站wordpress 前台登陆
  • VTK操作3D文件