在 Hacktoberfest 期间学点 Rust
来源:由 Freepik 设计
至少根据 GitHub 和 DigitalOcean 的说法,十月是参与开源项目的最佳时机——因为他们会在这时举办 Hacktoberfest。这是一项全球活动:只要创建 pull request(拉取请求),就能获得一件免费 T 恤和满满的社会声望。请点击这里阅读官方公告。
有些人认为自己无法做出有价值的贡献。要么是因为他们缺乏编程技能,要么是不知道该从哪里开始。
本指南正是要改变这一点!
让我来向你展示,任何人都可以如何为 Rust 这门安全的系统编程语言贡献代码。我写这篇文章的灵感来自 llogiq 发的一条推文。
1. 找一个优秀的 Rust 项目来参与
我们都希望自己的工作得到认可。
因此,我建议从中等规模的项目开始贡献,因为它们已经积累了一定的势头,但仍由少数维护者推动,所以总是欢迎他人提供帮助。相比之下,小型项目通常只对原作者有用,而大型项目一开始可能令人望而生畏,并且有更严格的规范。
现在,我们来看看 star 数在 5 到 100 之间、且在今年更新过的仓库。GitHub 支持基于 Lucene syntax(语法) 的高级搜索选项。
language:Rust stars:5..100 pushed:>2017-01-01这里有一份符合此筛选条件的项目列表。
2. 安装 Rust toolchain(工具链)
要开始贡献代码,我们需要一个可正常工作的 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(帕斯卡尔·赫特莱夫)的 rustfix(@killercup)来自动完成第 5 步:
rustfix --yolo && cargo check随机一篇博客