Rust 语言入门基础教程:从环境搭建到 Cargo 工具链

Rust 语言入门基础教程:从环境搭建到 Cargo 工具链
在这里插入图片描述

我的个人主页我的专栏:人工智能领域、java-数据结构、Javase、C语言,MySQL,JavaEE初阶,希望能帮助到大家!!!点赞👍收藏❤

在这里插入图片描述


在这里插入图片描述

目录

  1. 一、Rust 环境搭建:跨平台安装指南
  2. 二、Rust 基础语法入门:从 Hello World 到核心概念
  3. 三、Cargo 工具链:Rust 项目的“全能管家”
  4. 四、入门总结与进一步的学习

前言:

作为一门注重安全、高效且兼具现代特性的系统级编程语言,Rust 凭借内存安全机制、零成本抽象等优势,在区块链、嵌入式开发、系统编程等领域备受青睐。本文将从新手视角出发,带领我们一步步掌握 Rust 入门核心技术:环境搭建、基础语法及 Cargo 工具链使用,帮我们快速开启 Rust 学习之旅。

一、Rust 环境搭建:跨平台安装指南(以Windows为例)

要学习 Rust,首先需要搭建好开发环境。Rust 官方提供了统一的安装工具 rustup,支持 Windows、macOS、Linux 三大主流系统,操作简单且能自动管理版本。

1. Windows 系统安装

  • 打开浏览器,访问 Rust 官方网站:https://www.rust-lang.org/,点击首页的 “Install” 按钮,下载 rustup-init.exe 安装程序。
配置环境变量

在运行安装程序前,建议配置以下环境变量以指定自定义安装路径和加速下载:
以下是整理好的 Rust 环境变量配置说明表格:

变量名称说明备注
RUSTUP_DIST_SERVER替换下载源为旋武镜像推荐: https://mirror.xuanwu.openatom.cn
RUSTUP_UPDATE_ROOT替换 Rustup 更新源为旋武镜像推荐: https://mirror.xuanwu.openatom.cn/rustup
(可选) CARGO_HOME自定义 cargo 配置、缓存、二进制存放目录默认:%USERPROFILE%.cargo
(例: C:\Users\xxx.cargo)
(可选) RUSTUP_HOME自定义 Rust 工具链安装目录默认:%USERPROFILE%.rustup
(例: C:\Users\xxx.rustup)

补充说明:环境变量配置方法
在安装 Rust 前配置上述环境变量,可优化下载速度或自定义安装路径,具体操作如下:

当然也可以使用命令提示符 (CMD) 运行以下命令快速添加:

setx RUSTUP_DIST_SERVER https://mirror.xuanwu.openatom.cn setx RUSTUP_UPDATE_ROOT https://mirror.xuanwu.openatom.cn/rustup 

也可以通过打开 系统设置 → 系统 → 关于(或系统信息) → 高级系统设置 → 环境变量, 在 用户变量 中点击 新建 或 编辑,依次添加上述变量。如下如所示:

在这里插入图片描述
  • 1.双击运行安装程序,会弹出命令行窗口,按照提示操作:
  • 2.若未安装 Visual Studio MSVC Buildtools 组件,程序会提示在线安装,按回车键继续。(若此步骤出现问题可以参考 手动安装 MSVC Buildtools)。
  • 3.按回车键直接使用默认选项安装或输入 2 开始自定义安装。
选项说明默认值
Default host triple目标平台架构x86_64-pc-windows-msvc
Default toolchain工具链版本stable
Profile安装组件集default
Modify PATH是否将 Rust 添加到系统 PATHy
  • 4.安装成功后,程序会提示 Rust is installed now. Great!,按任意键退出安装程序。
  • 5.配置 crates.io 镜像
    创建 <CARGO_HOME>/config.toml 文件,

添加以下内容:

注: <CARGO_HOME> 默认为 %USERPROFILE%.cargo 路径 (例如: C:\Users\xxx\.cargo), 如果在配置环境变量步骤中手动配置了不同路径,请以手动配置的路径为准。

[net] git-fetch-with-cli = true [source.crates-io] replace-with = 'xuanwu-sparse' [source.xuanwu] registry = "https://mirror.xuanwu.openatom.cn/crates.io-index" [source.xuanwu-sparse] registry = "sparse+https://mirror.xuanwu.openatom.cn/index/" [registries.xuanwu] index = "https://mirror.xuanwu.openatom.cn/crates.io-index" 

验证安装:打开新的命令提示符(CMD)或 PowerShell,输入以下命令:

rustc --version # 查看编译器版本,如输出 rustc 1.75.0 (82e1608df 2023-12-21) cargo --version # 查看 Cargo 版本,如输出 cargo 1.75.0 (1d8b05cdd 2023-11-20)

若能正常输出版本信息,说明环境搭建成功。

2. 卸载 Rust

若后续需要卸载,只需在终端/命令行输入:

rustup self uninstall 

二、Rust 基础语法入门:从 Hello World 到核心概念

环境搭建完成后,我们从最经典的 “Hello World” 程序入手,逐步学习 Rust 基础语法。

1. 第一个 Rust 程序:Hello World

  • 新建一个文本文件,命名为 main.rs(Rust 源文件后缀为 .rs)。
  • 编译并运行:
    • 终端进入 main.rs 所在目录,输入 rustc main.rs 编译代码,会生成可执行文件(Windows 是 main.exe,macOS/Linux 是 main)。
    • 运行可执行文件:
      • Windows:.\main.exe
      • macOS/Linux:./main
    • 执行后终端输出 Hello, Rust!,第一个程序运行成功!

写入以下代码:

// 这是单行注释(// 开头)/* 这是多行注释 可以跨行吗 */fnmain(){// 程序入口函数,Rust 程序从 main 函数开始执行println!("Hello, Rust!");// 打印输出,! 表示调用的是宏(非普通函数)}

可以通过我们的在线体验,来验证这个代码

在这里插入图片描述

2. 变量与数据类型

Rust 是强类型语言,变量默认不可变(immutable),需显式声明可变(mutable)。

(1)变量声明

可变变量:用 let mut 声明,赋值后可修改。

fnmain(){letmut y =3; y =7;// 合法,可变变量可修改println!("y = {}", y);// 输出 y = 7}

不可变变量(默认):用 let 声明,赋值后不能修改,类似常量但可重新绑定。

fnmain(){let x =5;// 不可变变量,类型自动推导为 i32(32 位整数)// x = 6; // 错误!不可变变量不能修改let x =10;// 允许重新绑定,x 变为 10println!("x = {}", x);// 输出 x = 10}
(2)常用数据类型

Rust 数据类型分为 标量类型(单个值)和 复合类型(多个值组合)。

  • 标量类型:
    • 整数:i8(8 位有符号)、i32(默认)、u64(64 位无符号)等,如 let a: i32 = 42;
    • 浮点数:f32f64(默认),如 let b: f64 = 3.14;
    • 布尔值:bool,只有 truefalse,如 let c = true;
    • 字符:char(Unicode 字符,用单引号包裹),如 let d: char = 'R';
  • 复合类型:
    • 元组(Tuple):固定长度,元素类型可不同,如 let tup: (i32, f64, char) = (10, 2.5, 'a');
      取值用索引:let first = tup.0;(输出 10)
    • 数组(Array):固定长度,元素类型相同,如 let arr: [i32; 3] = [1, 2, 3];
      取值用索引:let second = arr[1];(输出 2)

3. 控制流:if-else 与循环

(1)if-else 表达式

Rust 中 if 条件不需要括号,且 if 是表达式(可返回值)。

fnmain(){let age =18;if age >=18{println!("成年");}else{println!("未成年");}// if 作为表达式返回值let status =if age >=18{"成年"}else{"未成年"};println!("状态:{}", status);// 输出 状态:成年}
(2)循环

Rust 提供三种循环:loop(无限循环)、while(条件循环)、for(遍历循环)。

for:遍历集合(数组、范围等),最常用且安全。

fnmain(){let arr =[10,20,30];for item in arr {println!("item = {}", item);// 输出 10、20、30}// 遍历范围(1 到 4,左闭右开)for i in1..5{println!("i = {}", i);// 输出 1、2、3、4}}

while:满足条件时循环。

fnmain(){letmut num =5;while num >0{println!("num = {}", num); num -=1;}// 输出:5、4、3、2、1}

loop:无限循环,需用 break 退出,可返回值。

fnmain(){letmut count =0;let result =loop{ count +=1;if count ==3{break count;// 退出循环并返回 count}};println!("result = {}", result);// 输出 result = 3}

4. 函数定义与调用

Rust 函数用 fn 声明,格式为:fn 函数名(参数: 类型) -> 返回值类型 { 函数体 }

// 定义一个加法函数,参数 a、b 为 i32,返回值为 i32fnadd(a:i32, b:i32)->i32{ a + b // Rust 函数最后一行表达式可省略 return,直接作为返回值}fnmain(){let result =add(3,5);println!("3 + 5 = {}", result);// 输出 3 + 5 = 8}

三、Cargo 工具链:Rust 项目的“全能管家”

cargo 是 Rust 官方提供的构建工具和包管理器,能帮我们快速创建项目、编译代码、运行程序、管理依赖等,是 Rust 开发的必备工具。

1. Cargo 核心功能

(1)创建新项目

终端输入以下命令,创建一个名为 my_first_rust 的项目:

cargo new my_first_rust 

执行后会生成如下目录结构:

my_first_rust/ ├── Cargo.toml # 项目配置文件(依赖、版本等) └── src/ # 源代码目录 └── main.rs # 主程序文件 

Cargo.toml:类似 package.json(Node.js),记录项目名称、版本、依赖等信息,示例内容:

[package] name = "my_first_rust" version = "0.1.0" edition = "2021" # Rust 版本(2018/2021) # 依赖配置 [dependencies] # 这里将添加第三方依赖 
(2)编译项目

进入项目根目录(cd my_first_rust),执行以下命令编译项目:

cargo build # 普通编译,生成 debug 版本(默认在 target/debug/ 目录)# 或 cargo build --release # 优化编译,生成 release 版本(在 target/release/ 目录,运行更快)

编译成功后,会在 target 目录下生成可执行文件。

(3)运行项目

无需手动编译后再运行,Cargo 提供了直接运行命令:

cargo run # 编译并运行 debug 版本# 或 cargo run --release # 编译并运行 release 版本

执行后会输出 Hello, world!(默认 main.rs 内容)。

(4)检查代码(不编译)

若只想检查代码语法错误,无需生成可执行文件,可执行:

cargo check 

该命令速度比 cargo build 快,适合开发中快速验证代码正确性。

2. 依赖管理:添加第三方库

Rust 生态有丰富的第三方库(称为“crates”),可通过 Cargo 快速引入。以添加 rand 库(生成随机数)为例:

(1)修改 Cargo.toml

[dependencies] 下添加 rand 依赖及版本:

[dependencies] rand = "0.8.5" # 指定版本为 0.8.5 
(2)下载并使用依赖

保存 Cargo.toml 后,执行 cargo buildcargo run,Cargo 会自动下载 rand 库及其依赖,并存放在 ~/.cargo/registry 目录(全局缓存)。

src/main.rs 中使用 rand 库:

userand::Rng;// 引入 rand 库的 Rng traitfnmain(){letmut rng =rand::thread_rng();// 创建随机数生成器let random_num = rng.gen_range(1..=10);// 生成 1-10 的随机数println!("随机数:{}", random_num);// 输出随机数,如 7}

执行 cargo run,即可看到随机数输出。

四、入门总结与进一步的学习

本文带我们掌握了 Rust 入门的三大核心:

  1. 环境搭建:通过 rustup 快速安装跨平台环境;
  2. 基础语法:变量、数据类型、控制流、函数的基本使用;
  3. Cargo 工具链:项目创建、编译、运行及依赖管理。

接下来,我们可以深入学习 Rust 的核心特性:所有权(Ownership)借用(Borrowing)生命周期(Lifetimes),这些是 Rust 内存安全的关键,也是区别于其他语言的核心难点可以结合官方文档(Rust 官方书)和小项目巩固学习,逐步掌握 Rust 的强大能力!

参考链接:

Read more

Flutter 三方库 drift_postgres 的鸿蒙化适配指南 - 实现高效、稳定的远程 PostgreSQL 数据库接入

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 drift_postgres 的鸿蒙化适配指南 - 实现高效、稳定的远程 PostgreSQL 数据库接入 在 OpenHarmony 应用开发中,处理复杂的数据持久化需求是架构设计的重中之重。除了本地 SQL 数据库外,直接连接远程 PostgreSQL 数据库也成为许多工业级应用的刚需。本文将深入探讨 drift_postgres 在鸿蒙系统上的适配实战,助力开发者构建强大的数据驱动应用。 前言 drift 是 Flutter 生态中最受欢迎的响应式持久化框架。而 drift_postgres 做为它的重要后端实现,使得我们可以在鸿蒙端直接操作远端数据库,就像操作本地 sqlite 一样丝滑。在鸿蒙设备(如平板或工业手持终端)需要与中央数据库实时同步的高频场景下,其价值不可估量。 一、原理分析 / 概念介绍

By Ne0inhk
构建AI临床副驾驶:基于Go的电子病历智能助手与HIS对接实战(上)

构建AI临床副驾驶:基于Go的电子病历智能助手与HIS对接实战(上)

摘要 本文旨在为医疗信息化开发者提供一套可落地的“AI临床副驾驶”设计方案,通过Go语言构建一个轻量、高效的中间层服务,与医院现有的HIS/EMR系统无缝对接。我们聚焦于三个典型智能场景——复诊记忆延伸、首诊导航提醒、病历质控与术语规范,展示如何在不侵入原有系统的情况下,为医生提供实时、精准的辅助决策信息。文章涵盖总体架构设计、多种HIS对接方式(REST/HL7/FHIR/DB视图)、接口契约定义、关键业务流程、完整的Go代码骨架,以及安全合规、部署运维等实践要点。所有代码均基于生产环境经验提炼,可作为项目直接启动的参考原型。 目录 1. 引言:电子病历的“副驾驶”时代 2. 总体架构:Go中间层 + HIS主系统 1. 设计原则 2. 组件划分

By Ne0inhk
Flutter 组件 test_track 适配鸿蒙 HarmonyOS 实战:全链路追踪与灰度治理,构建全场景 A/B 测试与特性分发架构

Flutter 组件 test_track 适配鸿蒙 HarmonyOS 实战:全链路追踪与灰度治理,构建全场景 A/B 测试与特性分发架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 test_track 适配鸿蒙 HarmonyOS 实战:全链路追踪与灰度治理,构建全场景 A/B 测试与特性分发架构 前言 在鸿蒙(OpenHarmony)生态迈向精细化运营、涉及多端设备同步实验、大规模特性灰度发布及实时埋点分析的背景下,如何实现高可靠的“特性开关(Feature Flags)”与“用户行为追踪”,已成为决定应用迭代效率与商业决策准确性的“神经中枢”。在鸿蒙设备这类强调分布式协同与离线可用性的场景下,如果 A/B 测试逻辑依然采用简单的在线同步参数,由于由于网络波动或设备流转时的身份不一致,极易由于由于配置缺失导致应用进入不可预知的逻辑分支。 我们需要一种能够实现配置本地快照、支持访客(Visitor)身份关联且具备高可靠异步追踪记录能力的实验治理框架。 test_track 为 Flutter 开发者引入了工业级的分布式实验分发方案。它不仅支持基于标识符的恒定分流,更内置了健壮的离线追踪队列。在适配到鸿蒙

By Ne0inhk
Flutter 三方库 workiva_analysis_options 的鸿蒙化适配指南 - 实现工业级的代码质量审计与 Linter 规约对齐、支持端侧工程架构健康度自动检测实战

Flutter 三方库 workiva_analysis_options 的鸿蒙化适配指南 - 实现工业级的代码质量审计与 Linter 规约对齐、支持端侧工程架构健康度自动检测实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 workiva_analysis_options 的鸿蒙化适配指南 - 实现工业级的代码质量审计与 Linter 规约对齐、支持端侧工程架构健康度自动检测实战 前言 在进行 Flutter for OpenHarmony 的企业级大型分布式项目开发时,如何统一上百名开发者的代码风格?简单的 analysis_options.yaml 默认配置往往无法满足金融、工业等严苛领域对代码健壮性、可维护性的极致要求。workiva_analysis_options 合集了来自顶级工程实践的代码静态分析规约。本文将探讨如何在鸿蒙端构建一道坚不可摧的代码质量防线。 一、原直观解析 / 概念介绍 1.1 基础原理 该库本质上是一套高度严谨的 Linter 指令集。它通过对 Dart 核心分析引擎建议集的精妙筛选,强制开启了涉及内存安全(Avoid Unnecessary

By Ne0inhk