rust基础之环境搭建

文章目录

  • [1 rust](#1 rust)
    • [1.1 简介](#1.1 简介)
    • [1.2 下载](#1.2 下载)
      • [1.2.1 下载安装rustup](#1.2.1 下载安装rustup)
      • [1.2.2 MSVC和Gnu区别](#1.2.2 MSVC和Gnu区别)
      • [1.2.3 切换国内镜像地址](#1.2.3 切换国内镜像地址)
        • [1.2.3.1 cargo 国内地址](#1.2.3.1 cargo 国内地址)
        • [1.2.3.2 rustup 国内地址](#1.2.3.2 rustup 国内地址)
    • [1.3 rustup](#1.3 rustup)
    • [1.4 cargo](#1.4 cargo)
    • [1.5 项目中文件](#1.5 项目中文件)

1 rust

1.1 简介

Rust 是由 Mozilla 主导开发的高性能编译型编程语言,遵循"安全、并发、实用"的设计原则,首次发布于 2010 年。

Rust 支持多种编程范式,包括函数式、并发式、过程式和面向对象风格。

由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务,可以在嵌入式设备上运行,还能轻松和其他语言集成。

rust中文网站

与C/C++相比:

  • C语言的语法相对简单,是三者中最基础的:
    语法结构清晰,关键字较少,没有复杂的类型系统和泛型概念,指针操作直接明了
  • C++ 在C的基础上增加了大量复杂特性:
    面向对象编程,模板和泛型,异常处理,STL标准库,多重继承等复杂概念
  • Rust的语法相对复杂但有其逻辑性:
    所有权系统,模式匹配,生命周期概念,严格的类型系统

1.2 下载

1.2.1 下载安装rustup

rust 环境搭建要用rustup比较方便点,rustup 用于管理不同平台下的 Rust 构建版本并使其互相兼容, 支持安装由 BetaNightly 频道发布的版本,并支持其他用于交叉编译的编译版本。

rustupRust 的工具链管理器(rustc + cargo + std + linker) 配置它能:

  • 安装和管理多个 Rust 版本(stable、beta、nightly)
  • 安装不同的目标平台编译支持
  • 管理 Cargo(Rust 的包管理器)
  • 提供工具如 rustfmt、clippy 等

win环境直接下载rustup地址:

也可以直接使用 scoop点击了解win环境下scoop使用教程)装 rustup,命令:scoop install main/rustup,执行完后,直接自动执行rustup-init.exe(使用的是默认msvc),而不像直接下载还需要手动执行rustup-init.exe,另外会自动添加用户环境变量,同时创建了CARGO_HOME / RUSTUP_HOME

其中,RUSTUP_HOME 是工具链仓库,CARGO_HOME是包和工具缓存,如果不设置,那么都在默认用户目录下:C:\Users\<username>\.rustupC:\Users\<username>\.cargo

scoop安装成功图示如下:

1.2.2 MSVC和Gnu区别

使用MSVC适用下面场景:

  • windows-sys / windows crate
  • Windows GUI
  • 调用系统 DLL
  • 做可分发的 Windows 程序

适应Gnu场景:

  • Rust 语法 / 所有权 / 生命周期
  • 写小 demo,写 CLI 程序
  • 算法 / 数据结构练习
  • cargo test
  • 不写 Windows GUI
  • 不直接调用 WinAPI / COM

下载Visual C++ Build Toolshttps://visualstudio.microsoft.com/visual-cpp-build-tools/

或者切换 rustupgnu 工具链(使用MinGW)命令,此时不用下载类似MSVC的三方工具,rustup自带的有gnu

bash 复制代码
# 安装 gnu 对应工具链
rustup toolchain install stable-x86_64-pc-windows-gnu
# 如果刚开始是gnu需要装下 msvd  
# rustup toolchain install stable-x86_64-pc-windows-msvc
# 或者使用  rustup install stable-x86_64-pc-windows-gnu
rustup default stable-x86_64-pc-windows-gnu


验证
rustup show

1.2.3 切换国内镜像地址

Rustup Cargo
用途 安装/更新 Rust 工具链本身(rustc、rust-std、cargo、rust-docs 等) 下载 项目依赖包(serde、tokio、actix-web 等 crates)
下载内容 rustc.exelibstdcargo.exe 等官方组件 serde-1.0.200.cratetokio-1.37.0.crate 等第三方库
触发时机 rustup installrustup updaterustup component add cargo buildcargo runcargo add
存储位置(默认) ~/.rustup/toolchains/ ~/.cargo/registry/cache/
配置方式 环境变量 RUSTUP_DIST_SERVER 配置文件 config.toml
1.2.3.1 cargo 国内地址

切换cargo国内下载地址,如果没有添加CARGO_HOME,那么就在 C:\Users\<username>\.cargo,但是上面用的是scoop下载安装,那么就是在scoop下D:\Scoop\persist\rustup\.cargo下添加文件config.toml

bash 复制代码
# 声明要对"官方源 crates-io"做替换
[source.crates-io]
# 以后凡是本来要去 crates-io 的,都改去下面定义的 ustc 源
replace-with = "ustc"

[source.ustc]
registry = "https://mirrors.ustc.edu.cn/crates.io-index"

其他可选的国内镜像源:

1.2.3.2 rustup 国内地址

下载时牵涉的两个环境变量:

环境变量 用途 下载内容 触发命令
RUSTUP_DIST_SERVER 工具链组件分发 rustc、rust-std、cargo、rust-docs、clippy 等 rustup installrustup updaterustup component add
RUSTUP_UPDATE_ROOT Rustup 自身更新 rustup-init.exe、rustup 新版本二进制 rustup self update

rustup 使用环境变量

bash 复制代码
setx RUSTUP_DIST_SERVER https://mirrors.ustc.edu.cn/rust-static
setx RUSTUP_UPDATE_ROOT https://mirrors.ustc.edu.cn/rust-static/rustup

1.3 rustup

rustup相关命令介绍

场景 命令示例 说明
help rustup help 查看rustup命令
rustup help <子命令> 查看rustup 子命令
查看信息 rustup show 显示当前安装的所有工具链及默认版本
rustc --version 只看当前生效的 rustc 版本
rustup which cargo 查看实际指向的 cargo 路径
安装/卸载工具链 rustup install stable 安装最新 stable 工具链
rustup install 1.86.0 安装指定版本工具链
rustup install nightly 安装最新 nightl工具链y
rustup uninstall 1.86.0 卸载指定版本工具链
切换默认工具链 rustup default stable 全局换成 stable工具链
rustup default nightly 全局换成 nightly工具链
项目级版本锁定 rustup override set nightly 在当前项目目录固定 nightly
rustup override unset 取消目录级锁定
更新 rustup update 更新 rustup 本身及所有已装工具链
rustup update nightly 只更新 nightly
组件管理 rustup component add rustfmt clippy 一次性安装多个组件
rustup component list --installed 查看已装组件
rustup component remove rustfmt 卸载组件
目标平台(交叉编译) rustup target add wasm32-unknown-unknown 加装 32-bit WebAssembly
rustup target list --installed 查看已装目标
一次性运行指定版本 rustup run nightly cargo build 用 nightly 临时跑一条命令
生成 shell 补全 rustup completions bash > ~/.local/share/bash-completion/completions/rustup 支持 bash/zsh/fish/pwsh
卸载 rustup rustup self uninstall 一键卸载整个 Rust 环境
toolchain rustup toolchain install stable 安装最新 stable 工具链
rustup toolchain list 展示工具链列表
rustup toolchain remove nightly 移除工具链

1.4 cargo

cargo相关命令介绍,

任何命令后加 --help 可看全部选项

cargo --list 列出所有子命令

场景 命令示例 说明
项目生命周期 cargo new my_app 新建可执行项目
cargo new --lib my_lib 新建库项目
cargo run 快速编译运行(调试)
cargo check 检查能否编过(最快)
cargo build 正式构建(调试)
cargo build --release 发布级构建
cargo clean 清理中间文件
cargo build -j 8 限制并行任务数
cargo build --timings 生成耗时火焰图,定位慢包
依赖管理 cargo add serde 添加最新版依赖
cargo remove serde 移除依赖
cargo add tokio --features full 添加指定版本/特征
cargo update 升级 lock 文件里所有包
cargo update -p serde 只升级某个包
cargo tree 查看依赖树
cargo outdated(需 cargo install cargo-outdated 查看过时包
测试 & 文档 cargo test 跑全部测试
cargo test --lib 只测某个模块
cargo nextest run(需安装 nextest 连续测(保存状态)
cargo doc --open 生成并打开文档
cargo doc --no-deps(反向) 给依赖也生成文档
代码质量 cargo fmt 自动格式化
cargo clippy 检查代码风格/常见错误
cargo clippy --fix 自动修复部分 clippy 警告
发布&注册表 cargo package 打包并验证
cargo publish 发布到 crates.io
cargo login / cargo logout 登录/注销
cargo search regex 查询注册表
扩展子命令 cargo install cargo-audit 检查依赖安全漏洞
cargo install cargo-edit 获得 add/rm/upgrade 命令
cargo install cargo-outdated 查看可升级依赖
cargo install cargo-nextest 更快并行测试运行器

1.5 项目中文件

Cargo.lock 锁的是"代码用什么库",使用cargo new 项目时自动生成

.rustup-toolchain.toml 锁的是"代码用什么编译器",需要手动创建,比如:

bash 复制代码
# .rustup-toolchain.toml
[toolchain]
channel = "1.86.0"
components = ["rustfmt", "clippy"]
targets = ["wasm32-unknown-unknown"]
相关推荐
openKylin1 小时前
与全球技术演进同频,openKylin 3.0从C迈向Rust
c语言·开发语言·rust·开源·开放原子·openkylin
tellmewhoisi2 小时前
多版本共用redis的token有效期校验(过期重新登录)
java·redis·缓存
疯狂打码的少年2 小时前
【软件工程】结构化设计:模块独立性与耦合内聚
java·开发语言·笔记·软件工程
乐观的Terry2 小时前
3、数据库设计与领域实体
java·数据库·spring boot·spring cloud·ai编程
程高兴3 小时前
PMSM基于在线转动惯量辩识的滑模负载转矩观测器MATLAB-SIMULINK仿真模型
开发语言·matlab
kisloy3 小时前
【python零基础教程第24讲】代码规范与质量管控
开发语言·python
C++、Java和Python的菜鸟3 小时前
第4章 后端Web基础(基础知识)
java·开发语言
芷栀夏3 小时前
Java教育平台实战复盘:课程、考试与学习行为分析系统设计
java·开发语言·学习
从零开始的代码生活_3 小时前
C++ 多态详解:虚函数、动态绑定、抽象类与虚表原理
开发语言·c++·后端·学习·算法