新手学Rust 第一章

409 阅读3分钟

开始

安装Rust 工具链

有很多的方式可以在你的计算机上安装 Rust , 但是推荐使用 rustup

怎么安装rustup 可以看这个网址 : rustup.rs

编译目标

Rust 编译器的主要目的是你的Rust代码编译成 机器码, 以便于CPU 和你的操作系统理解并且执行

所以需要为每个不同的目标使用不同的rust编译器, 使其可以生成不同平台的可执行文件

发布版本

有两种发布版本

  • beat 下一个正式版本的候选版本
  • nightly 来自 rust仓库的master 分支, 因为每晚都会构建, 所以叫这个名字

如果测试你的软件是应该是 beat 版本, 是帮助Rust 语言发现bug 的途径

nightly 主要是让开发人员使用一些没有开发完成的功能,

我们需要什么工具链

安装rustup 之后 将 为你提供一个你宿主平台为目标的编译器。

但是有一些工具例如宏扩展可能会依赖 nightly 版本的编辑器。

可以使用下面的命令来安装nightly 编辑器

rustup toolchain install nightly --allow-downgrade

如果rustup 的一些组建在nightly 版本中存在损坏或者丢失的情况 --allow-downgrade 将会告诉rustup 去寻找并且安装 这些组建的nightly 的可用版本

如果想制定发布的版本我们可以使用

rustup toolchain install \ nightly-x86_64-unknown-linux-gnu \ --allow-downgrade

我们可以使用 rustup update 更新我们的工具链.
使用rustup toolchain list 可以看到已经看到已经安装的工具链在你的机器上

项目启动

rustc 就是 Rust 的编译器, 查看版本

rustc --version

当然不会有太多的时间使用rustc , 我们一般常用的构建工具是cargo 检查cargo 的版本

cargo --version

使用cargo来创建一个项目

cargo new project

所以我们有了一个新的文件夹 名为 zero2prod

project
    Cargo.toml
    .gitignore
    .git
    src
        main.rs

并且这个是一个git 项目

CI 步骤

Test 测试

如果你的CI 流程 有一个单独的步骤, 那么应该是测试 测试是RUST 里非常重要的概念, 你可以使用 cargo 来运行你的单元测试

cargo test

cargo test 会在测试之前,编译项目, 所以你不需要运行cargo build , 虽然大多数会先运行carog build , 因为可以缓存依赖

代码覆盖率

虽然代码覆盖率作为左亮检查有几个缺点, 但是这是一种快速收集信息的方法

测试代码覆盖率的可以通过 cargo tarpaulin 可以先用cargo 安装,

cargo install cargo-tarpaulin

然后运行

cargo tarpaulin --ignore-tests 

clippy 语法检查

rust 安装的组件包中包含, clippy 但是ci 的环境通常是最小话的配置, 通常不包含clppy

rustup component add clippy 

可以直接在项目中运行

cargo clippy

如果在ci 过程中, 如果clippy 发出警告, 那么就linter 检查失败, 可以使用如下命令

cargo clippy -- -D warnings

当然静态分析并不是绝对正确的, 所以有时候可能会建议错误

你可以禁用警告 使用 #[allow(clippy:lint_name] 属性在被影响的代码块上, 或者对整个项目都禁用 在 clippy.toml 配置#![allow(clippy:lint_name]

格式化

rustfmt 是 Rust 官方的格式化工具 当然和其他的工具一样也是默认安装的

rustup component add rustfmt

你可以运行

cargo fmt 

在CI 中, 可以添加以下命令来执行格式化

cargo fmt -- --check

如果发现格式不对的代码, 就会进行输出 也可以在项目中配置 rustfmt.toml 文件来, 配置格式化样式

安全漏洞

可以运行性来检查漏洞是否存在

cargo install cargo-audit
cargo audit

来扫描你的依赖