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

# 第 1 章:Rust 入门基础

# 第 1 章:Rust 入门基础

第 1 章:Rust 入门基础

1.1 Rust 语言简介

Rust 是一门系统级编程语言,强调性能、安全性和并发。它常用于编写操作系统组件、嵌入式程序、网络服务、命令行工具和高性能库。

  • 目标:在无垃圾回收器的情况下实现内存安全
  • 核心特性:所有权、借用、生命周期、零成本抽象、模式匹配
  • 工具链:rustccargorustuprustfmtclippy
  • 生态:crates.ioRust Playground、官方文档

1.2 开发环境搭建

1.2.1 Windows 推荐:MSYS2 + MinGW64 + Rust

  1. 安装 MSYS2

    • 下载地址:https://www.msys2.org/
    • 运行安装程序,完成后打开 MSYS2 MinGW 64-bit 终端
    • 更新核心包:
      pacman -Syu
      
    • 关闭终端后重新打开 MinGW 64-bit 终端,再次更新:
      pacman -Su
      
  2. 安装 MinGW64 工具链

    • 安装基本工具:
      pacman -S --needed base-devel mingw-w64-x86_64-toolchain
      
    • 安装 gitcurlmake 等常用工具:
      pacman -S --needed mingw-w64-x86_64-git mingw-w64-x86_64-curl mingw-w64-x86_64-make
      
  3. 安装 Rust 与 rustup

    • 在 MinGW64 终端中执行官方安装脚本:
      curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
      
    • 如果喜欢 GUI 安装,可在 Windows 上运行 rustup-init.exe
    • 安装完成后,使用 MinGW64 终端检查:
      rustc --version
      cargo --version
      rustup show
      
  4. 配置 Rust 目标和工具链

    • 默认安装 stable 工具链:
      rustup default stable
      
    • 如果需要构建 x86_64-pc-windows-gnu
      rustup target add x86_64-pc-windows-gnu
      
    • 通过 MSYS2 MinGW64 终端运行时通常使用 x86_64-pc-windows-gnu 目标
  5. VS Code 设置

    • 安装 Visual Studio Code
    • 推荐扩展:
      • rust-lang.rust-analyzer
      • ms-vscode.cpptools(可选,用于 C/C++ 相关原生库调试)
      • matklad.rust-analyzer
    • 在 VS Code 中打开项目文件夹
    • 如果使用 MSYS2 终端编译,建议将 VS Code 终端类型设置为 PowerShell 或命令提示符,并确保 PATH 包含 MSYS2 的 mingw64/bin
    • settings.json 中可加入:
      {"terminal.integrated.shell.windows": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe","terminal.integrated.env.windows": {"PATH": "C:\\msys64\\mingw64\\bin;${env:PATH}"}
      }
      
  6. 常用命令

    • rustc --version
    • cargo --version
    • rustup update
    • rustup default stable
    • cargo new hello_rust
    • cargo init
    • cargo run
    • cargo build
    • cargo check
  7. 创建项目

    • 创建新项目:cargo new hello_rust
    • 初始化现有目录:cargo init
    • 进入目录:cd hello_rust
    • 编译运行:cargo run
    • 仅编译:cargo build
    • 语法检查:cargo check

1.3 基本语法

变量与可变性

fn main() {let x = 5;let mut y = 10;y += 2;println!("x = {}, y = {}", x, y);
}
  • let 默认绑定不可变变量
  • let mut 声明可变变量
  • const 定义常量,必须显式指定类型且在编译时求值
  • 变量遮蔽(shadowing)允许重新绑定同名变量
let x = 5;
let x = x + 1;

数据类型

Rust 常用标量类型:

  • 整数:i32, u32, i64, usize
  • 浮点数:f32, f64
  • 布尔:bool
  • 字符:char

复合类型:

  • 元组:(i32, f64, char)
  • 数组:[i32; 5]

类型推断允许省略大部分显式类型,但函数参数、常量通常需要指定类型。

表达式与语句

Rust 区分表达式和语句:

  • 语句不会返回值,例如 let x = 5;
  • 表达式会返回值,例如 5 + 6
let x = {let y = 3;y + 1
};

注释

  • 单行注释:// ...
  • 多行注释:/* ... */
  • 文档注释://///!

1.4 函数与控制流

函数定义

fn add(a: i32, b: i32) -> i32 {a + b
}
  • fn 用于定义函数
  • 参数必须指定类型
  • 返回类型使用 -> 标注
  • 最后一个表达式可省略 return

控制流

if / else:

let number = 7;
if number < 5 {println!("小于 5");
} else {println!("大于等于 5");
}

循环:

  • loop:无限循环,通常与 break 结合
  • while:条件循环
  • for:在迭代器上迭代
for i in 1..5 {println!("{}", i);
}

模式匹配基础

if let 是处理简单模式匹配的便捷方式:

let some_value = Some(3);
if let Some(x) = some_value {println!("value = {}", x);
}

1.5 小结与练习

练习建议:

  • 写一个程序计算 1~n 的阶乘
  • 实现摄氏度 <-> 华氏度转换函数
  • 练习使用 let mutconst 和遮蔽
  • 通过 cargo checkcargo run 观察编译与运行区别
http://www.jsqmd.com/news/766341/

相关文章:

  • 别再乱用@Autowired注入HttpServletRequest了!聊聊Spring里Request对象的线程安全那点事
  • 为什么92%的制造企业卡在AISMM第三阶段?——来自西门子、博世、宁德时代联合验证的落地断点图谱
  • OpenCV C++ KNN模型训练避坑指南:从制作自己的手写数字数据集到保存model.xml
  • 2026年OpenClaw怎么部署?华为云简易实用2分钟安装及接入百炼APIKey步骤
  • 解决99%的截图难题:Pico处理跨域图片、字体和滚动元素的终极方案
  • Alexa Fluor 647标记的B7-H3/CD276 Fc嵌合蛋白在肿瘤免疫靶向治疗研究中的应用
  • 2026年4月比较好的电梯批发厂家推荐,伺服电梯/液压电梯/私人家用电梯/螺杆电梯/曳引背包电梯,电梯源头厂家选哪家 - 品牌推荐师
  • 在LangChain中实现思维链(CoT)推理的五种实战方法
  • 咸宁本地专业防水TOP5靠谱推荐:家里漏水不用愁,免费上门不求人。本地最新防水企业资讯:专业师傅持证上门,收费透明无隐藏收费,质保5-10年,售后有保障 - 企业资讯
  • 【VSCode 2026农业物联网开发权威指南】:零基础30天打造高兼容性IoT插件(含官方API v2.8.1适配清单)
  • 苏州本地专业防水TOP5靠谱推荐:家里漏水不用愁,免费上门不求人。本地最新防水企业资讯:专业师傅持证上门,收费透明无隐藏收费,质保5-10年,售后有保障 - 企业资讯
  • TB6600驱动器共阴共阳接法傻傻分不清?一张图搞定STM32与42步进电机的接线避坑指南
  • Docker Cheat Sheet:数据一致性保障策略终极指南
  • python: Registry Pattern
  • 观察 Taotoken 账单中心如何实现按 Token 计费与消费追溯
  • LinkSwift直链助手:免费解锁八大网盘极速下载的终极指南
  • 别再拍脑袋定权重了!用Python手把手教你实现熵权TOPSIS,搞定多指标决策难题
  • 为什么83%的MCP 2026早期部署团队在第47小时触发级联超时?——基于127个集群日志的智能调度阈值预警模型首次公开
  • 2026年广东地区的Nitronic60不锈钢厂商推荐名单 - 品牌2026
  • 如何在5分钟内免费搭建本地AI聊天界面:Ollama Web UI Lite终极指南
  • 3个步骤将Obsidian升级为智能知识助手:obsidian-copilot终极指南
  • 革命性React状态管理:Kea v3完整指南与实战教程
  • 2026年4月市场专业的石墨铅粉品牌推荐,金属粉末/金属铅粉/高纯石墨微粉/铅粉/高纯铅粉,石墨铅粉供应商有哪些 - 品牌推荐师
  • 视频转PPT神器:3分钟从视频中智能提取PPT内容
  • ChatTTS电子书有声化:批量生成高质量听书内容
  • 视觉AI测试:如何让机器“看懂”UI并自动验证?
  • 车载嵌入式开发者的紧急通知:VSCode 2026正式版已移除旧版Cortex-Debug兼容层(附5分钟热迁移补丁与离线适配包下载通道)
  • 用几十行代码搞定 Chat 接口透明转发:跨环境轻量级网关实战
  • NBTExplorer终极指南:快速掌握我的世界数据编辑神器
  • 2026年参考:三亚地区防水补漏服务提供商一览,瓷砖空鼓维修/房屋维修/楼房维修/墙砖空鼓修缮/防水,防水补漏公司选哪家 - 品牌推荐师