Learn Some Rust During Hacktoberfest

Matthias Endler

趁 Hacktoberfest 學點 Rust

Dirndl、Lederhose、Brezn、啤酒、Rust
Dirndl、Lederhose、Brezn、啤酒、Rust
來源: 由 Freepik 設計

十月是為開放原始碼做出貢獻的最佳時機——至少 GitHub 和 DigitalOcean 是這麼說的。因為他們會在這個時候舉辦 Hacktoberfest,這是一場全球性的活動,只要發起 pull request,就能獲得一件免費 T 恤和滿滿的街頭聲望。請在這裡閱讀官方公告。

有些人認為自己無法做出有價值的貢獻。可能是因為缺乏程式設計能力,也可能是因為不知道從何著手。

這份指南就是要改變這種想法!

讓我來示範每個人如何都能為 Rust 這個安全的系統程式語言貢獻程式碼。寫這篇文章的靈感來自 來自 llogiq 的推文

1. 找到一個很棒的 Rust 專案來參與

我們都希望自己的付出能被肯定。
因此,我建議從中型專案開始貢獻,因為這類專案已經有了一定的動能,但仍由少數維護者推動,所以任何協助都非常受歡迎。相比之下,小型專案大多只對原作者有用,而大型專案一開始可能會讓人卻步,且規範也更為嚴格。

現在,讓我們來看看今年內有更新、且擁有 5 到 100 顆星的儲存庫。GitHub 支援基於 Lucene 語法的進階搜尋選項

language:Rust stars:5..100 pushed:>2017-01-01

這裡是一份符合此篩選條件的專案清單。

2. 安裝 Rust 工具鏈

要開始貢獻,我們需要可運作的 Rust 編譯器和 cargo 套件管理器。幸好,安裝過程應該相當簡單。我推薦使用 rustup 來安裝。

在終端機中執行以下指令,然後依照螢幕上的指示操作。

curl https://sh.rustup.rs -sSf | sh

如果不確定,直接接受預設值即可。安裝完成後,我們還需要取得編譯器的 nightly 版本,以供後續使用。

rustup install nightly

有疑問嗎?請在這裡查看更詳細的安裝說明。

3. Fork 專案並複製到你的電腦上

首先,點擊 GitHub 專案頁面右上角小小的 fork 按鈕。接著將你的 fork 複製到電腦上。

git clone [email protected]:yourusername/project.git

如需更詳細的說明,請前往這裡

4. 能否順利建置?

在開始修改程式碼庫之前,我們應該先確認它處於可運作的狀態。以下指令應該能在專案資料夾內直接執行成功。

cargo build
cargo test

如果不行,你可能需要查閱 README 以取得進一步的說明。(但也歡迎直接換另一個專案試試。)

5. 秘密武器

訣竅在這裡:我們使用一個linter(程式碼檢查工具),名為 clippy,來找出任何 Rust 程式碼庫中可改進之處。

要取得 clippy,請這樣安裝:

cargo +nightly install clippy

之後,你就可以在專案根目錄下依需要隨時執行它。

rustup run nightly cargo clippy

這麼做應該會提供你具體可行的資訊,告訴你如何改進程式碼庫。

以下是一些範例輸出:

warning: useless use of `format!`
   --> src/mach/header.rs:420:49
    |
420 |             let error = error::Error::Malformed(format!("bytes size is smaller than an Mach-o header"));
    |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: #[warn(useless_format)] on by default
    = help: for further information visit https://rust-lang-nursery.github.io/rust-clippy/v0.0.165/index.html#useless_format

warning: this expression borrows a reference that is immediately dereferenced by the compiler
   --> src/mach/header.rs:423:36
    |
423 |             let magic = mach::peek(&bytes, 0)?;
    |                                    ^^^^^^ help: change this to: `bytes`
    |
    = help: for further information visit https://rust-lang-nursery.github.io/rust-clippy/v0.0.165/index.html#needless_borrow

只要試著套用其中一些建議,看看專案是否仍能編譯、測試是否仍能通過。查看說明區塊中文件的連結以了解更多資訊。從小處著手,讓你的修改更容易被審查。

6. 建立 Pull Request

如果你對自己的修改感到滿意,現在就是發布它們的時候了!最好為你的修改建立一個新的分支,然後將其推送到你的 fork。

git checkout -b codestyle
git commit -am "Minor codestyle fixes"
git push --set-upstream origin codestyle

接著,前往 GitHub 上你的 fork 主頁。應該會看到一個標示為 Compare & pull request 的按鈕。請加上有意義的描述,然後提交 pull request。

恭喜!你已經為 Rust 生態系做出貢獻。感謝你!🎉

成果展示

額外獎勵!

如果覺得所有手動修正和檢查聽起來太枯燥,你可以使用 Pascal Hertleif(帕斯卡·赫特萊夫)(@killercup) 開發的 rustfix 來自動化步驟 5:

rustfix --yolo && cargo check

原文由 Matthias Endler 發布

本文章由 muse-spark-1.2-contributor 進行翻譯