rust基础之环境搭建
文章目录1 rust1.1 简介1.2 下载1.2.1 下载安装rustup1.2.2 MSVC和Gnu区别1.2.3 切换国内镜像地址1.2.3.1 cargo 国内地址1.2.3.2 rustup 国内地址1.3 rustup1.4 cargo1.5 项目中文件1 rust1.1 简介Rust是由 Mozilla 主导开发的高性能编译型编程语言遵循安全、并发、实用的设计原则首次发布于 2010 年。Rust支持多种编程范式包括函数式、并发式、过程式和面向对象风格。由于没有运行时和垃圾回收它能够胜任对性能要求特别高的服务可以在嵌入式设备上运行还能轻松和其他语言集成。rust中文网站与C/C相比C语言的语法相对简单是三者中最基础的语法结构清晰关键字较少没有复杂的类型系统和泛型概念指针操作直接明了C 在C的基础上增加了大量复杂特性面向对象编程模板和泛型异常处理STL标准库多重继承等复杂概念Rust的语法相对复杂但有其逻辑性所有权系统模式匹配生命周期概念严格的类型系统1.2 下载1.2.1 下载安装rustuprust环境搭建要用rustup比较方便点rustup用于管理不同平台下的Rust构建版本并使其互相兼容 支持安装由Beta和Nightly频道发布的版本并支持其他用于交叉编译的编译版本。rustup是Rust的工具链管理器rustc cargo std linker 配置它能安装和管理多个 Rust 版本stable、beta、nightly安装不同的目标平台编译支持管理 CargoRust 的包管理器提供工具如 rustfmt、clippy 等win环境直接下载rustup地址msvc工具链https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exemingw工具链https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-gnu/rustup-init.exe也可以直接使用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\.rustup和C:\Users\username\.cargoscoop安装成功图示如下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/或者切换rustup为gnu工具链使用MinGW命令此时不用下载类似MSVC的三方工具rustup自带的有gnu# 安装 gnu 对应工具链rustup toolchaininstallstable-x86_64-pc-windows-gnu# 如果刚开始是gnu需要装下 msvd# rustup toolchain install stable-x86_64-pc-windows-msvc# 或者使用 rustup install stable-x86_64-pc-windows-gnurustup default stable-x86_64-pc-windows-gnu 验证 rustup show1.2.3 切换国内镜像地址RustupCargo用途安装/更新Rust 工具链本身rustc、rust-std、cargo、rust-docs 等下载项目依赖包serde、tokio、actix-web 等 crates下载内容rustc.exe、libstd、cargo.exe等官方组件serde-1.0.200.crate、tokio-1.37.0.crate等第三方库触发时机rustup install、rustup update、rustup component addcargo build、cargo run、cargo add存储位置默认~/.rustup/toolchains/~/.cargo/registry/cache/配置方式环境变量RUSTUP_DIST_SERVER配置文件config.toml1.2.3.1 cargo 国内地址切换cargo国内下载地址如果没有添加CARGO_HOME那么就在C:\Users\username\.cargo但是上面用的是scoop下载安装那么就是在scoop下D:\Scoop\persist\rustup\.cargo下添加文件config.toml# 声明要对“官方源 crates-io”做替换[source.crates-io]# 以后凡是本来要去 crates-io 的都改去下面定义的 ustc 源replace-withustc[source.ustc]registryhttps://mirrors.ustc.edu.cn/crates.io-index其他可选的国内镜像源中科大镜像https://mirrors.ustc.edu.cn/git/crates.io-index清华大学镜像https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index阿里巴巴镜像https://code.aliyun.com/rust/crates.io-index.git1.2.3.2 rustup 国内地址下载时牵涉的两个环境变量环境变量用途下载内容触发命令RUSTUP_DIST_SERVER工具链组件分发rustc、rust-std、cargo、rust-docs、clippy 等rustup install、rustup update、rustup component addRUSTUP_UPDATE_ROOTRustup 自身更新rustup-init.exe、rustup 新版本二进制rustup self updaterustup使用环境变量setx RUSTUP_DIST_SERVER https://mirrors.ustc.edu.cn/rust-static setx RUSTUP_UPDATE_ROOT https://mirrors.ustc.edu.cn/rust-static/rustup1.3 rustuprustup相关命令介绍场景命令示例说明helprustup 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工具链yrustup uninstall 1.86.0卸载指定版本工具链切换默认工具链rustup default stable全局换成 stable工具链rustup default nightly全局换成 nightly工具链项目级版本锁定rustup override set nightly在当前项目目录固定 nightlyrustup 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 WebAssemblyrustup target list --installed查看已装目标一次性运行指定版本rustup run nightly cargo build用 nightly 临时跑一条命令生成 shell 补全rustup completions bash ~/.local/share/bash-completion/completions/rustup支持 bash/zsh/fish/pwsh卸载 rustuprustup self uninstall一键卸载整个 Rust 环境toolchainrustup toolchain install stable安装最新 stable 工具链rustup toolchain list展示工具链列表rustup toolchain remove nightly移除工具链1.4 cargocargo相关命令介绍任何命令后加--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.iocargo 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锁的是“代码用什么编译器”需要手动创建比如# .rustup-toolchain.toml[toolchain]channel1.86.0components[rustfmt,clippy]targets[wasm32-unknown-unknown]