Rust 開發環境最佳設置

在這篇文章中,我們以 VSCode 作爲 Rust 開發的 IDE。VSCode 是我的首選,因爲它可以在所有主流操作系統上使用,並且具有高度可配置性。

在本文中,會涉及到以下內容:

VSCode 擴展插件

1,rust-analyzer

首先,是 rust analyzer,它是 rust 的官方語言服務器,提供代碼補全、跳轉、嵌入提示等功能。

2,CodeLLDB

接下來是 CodeLLDB 這個擴展,它允許你調試 rust 代碼。

3,Even Better TOML

接下來是 Even Better TOML 擴展,它爲 toml 文件提供語法高亮顯示。

4,Error Lens

Error Lens 擴展,可以將錯誤和警告突出顯示

示例代碼如下:

正如你在這個示例中看到的,它將使錯誤更加突出,並在行中顯示錯誤消息

5,Todo Tree

接下來是 Todo Tree,它將幫助你快速找到代碼中的 to do 項

6,crates

最後是 crates 擴展,它可以輕鬆檢查 Cargo.toml 文件中的依賴項是否過期。

如果一個依賴項過期了,你會看到一個紅色的 X,後面跟着該依賴項的最新版本。示例如下:

配置 Cargo 工具

1,Clippy

Clippy 是一個可配置的過濾器,可以捕獲常見錯誤並改進 rust 代碼。你可以通過在終端中手動運行 clippy,但是更我喜歡配置爲自動運行。

在 VSCode 中打開 Settings,在搜索欄中鍵入 “rust-analyzer check”。然後向下滾動,直到看到 check 命令,然後將 check 更改爲 Clippy。

2,Rust format

要將 rust format 配置爲自動運行,我們將 setting 並切換爲 Json 格式,然後加入以下配置:

3,cargo watch

接下來讓我們看一下如何使用 cargo watch 設置實時加載,Cargo watch 是一個 Cargo 插件,用於監視項目源文件中的更改。

在項目根目錄下,運行如下命令安裝 cargo watch:

cargo add cargo-watch

然後運行以下命令來運行 cargo watch:

cargo watch -q -c -w src/ -X 'run -q'

然後,如果我們改變代碼,它將自動被重新編譯。

持續集成

現在讓我們看一下如何設置與 GitHub action 的持續集成。爲我們的項目設置持續集成,我們需要做的就是在根目錄下,創建一個包含 workflows 文件夾的. gitHub 文件夾,其中又包含定義 workflows 的 yaml 文件,如圖:

這裏有一個簡單的 workflows 的例子,叫做 rust-ci.yml,內容如下:

name: Rust CI

on: 
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Set up Rust
        uses: actions/checkout@v2
      - name: Install cargo-audit
        uses: cargo install cargo-audit
      - name: Build
        uses: cargo build --verbose
      - name: Test
        uses: cargo test --verbose
      - names: Clippy
        uses: cargo clippy --verbose -- -D warnings
      - names: Audit
        uses: cargo audit

當代碼變更被推送到主分支,或者拉取請求指向主分支時,它就會運行這個 workflows。一般包含幾個步驟的作業。

1,首先,我們的代碼被 check out

2,然後,安裝 cargo-audit,這將允許我們審計代碼庫中的漏洞

3,構建並測試代碼

4,運行 cargo clippy,如果出現任何警告,則構建失敗

5,最後,我們運行 cargo audit,

如果我們的項目依賴包含任何已知的漏洞,那麼構建將失敗

至此,Rust 開發環境的最佳設置已經完成了,希望對你有所幫助。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/cQxIxKYjumH21ZV1yEwVfw