Rustlings 是由 Rust 团队维护的开源项目,旨在帮助你通过调试代码的方式来学习 Rust。
在我上一篇 关于 Rustup 的文章 中,我向你们展示了如何安装 Rust 工具链。但是,如果不能上手操作一下 Rust 的话下载工具链又有什么用?学习任何语言都包括阅读现有的代码和写很多的示例程序,这是精通一门语言的好方法。然而,我们还可以走第三条路:调试代码。
通过调试来学习牵扯到尝试去编译一个已经写好的(满是漏洞的)示例程序,理解编译器生成的错误信息,修复示例代码,然后再重新编译。重复这个过程直到代码能够成功被编译并运行。
Rustlings 是一个由 Rust 团队维护的开源项目,旨在帮助你通过调试代码来学习 Rust。它也会一路为你提供提示。如果你是一名 Rust 初学者,并且刚开始阅读或已经读完了 Rust 书籍,那么 Rustlings 就是理想的下一步。Rustllings 帮助你将运用书中所学,并转向开发更大的项目。
安装 Rustlings
我使用(并推荐)Fedora 电脑来体验 Rustlings,但是任何 Linux 发行版都可以。要安装 Rustlings,你必须下载并运行它的安装脚本。通常建议你以不具备任何特别权限的普通用户(非 root 用户)来运行脚本。
记住,你需要 Rust 工具链来使用 Rustlings。如果你还没有这些工具链,请参考我 关于 Rustup 的文章。
当你准备好时,下载这个安装脚本:
$ curl -L https://raw.githubusercontent.com/rust-lang/rustlings/main/install.sh > rustlings_install.sh
$ file rustlings_install.sh
rustlings_install.sh: Bourne-Again shell script, ASCII text executable
阅读脚本以了解它会做什么:
$ less rustlings_install.sh
然后运行安装:
$ bash rustlings_install.sh
[...]
Installing /home/tux/.cargo/bin/rustlings
Installed package `rustlings v4.8.0 (/home/tux/rustlings)` (executable `rustlings`)
All done!
运行 rustlings
以开始。
Rustlings 练习
你现在可以使用命令 rustlings
。与标志 --help
一起执行来查看可选的选项。
$ rustlings --help
这个安装脚本也克隆了 Rustlings 的 Git 仓库,并安装了运行示例程序所需的依赖。你可以在 ruslings
下的 exercises
目录查阅这些示例程序。
$ cd rustlings
$ pwd
/home/tux/rustlings
$ ls
AUTHORS.md Cargo.toml CONTRIBUTING.md info.toml install.sh README.md target Cargo.lock CHANGELOG.md exercises install.ps1 LICENSE src tests
$ ls -m exercises/
advanced_errors, clippy, collections, conversions, enums, error_handling, functions, generics, if, intro, macros, mod.rs,
modules, move_semantics, option, primitive_types, quiz1.rs, quiz2.rs, quiz3.rs, quiz4.rs, README.md,
standard_library_types, strings, structs, tests, threads, traits, variables
从命令行列出所有练习
命令 ruslings
提供给你一个 list
命令用以展示每个示例程序,它的完整路径,以及状态 (默认为 “待定”)。
$ rustlings list
Name Path Status
intro1 exercises/intro/intro1.rs Pending
intro2 exercises/intro/intro2.rs Pending
variables1 exercises/variables/variables1.rs Pending
variables2 exercises/variables/variables2.rs Pending
variables3 exercises/variables/variables3.rs Pending
[...]
在显示结尾处,你会有一个进度报告用来追踪进度。
Progress: You completed 0 / 84 exercises (0.00 %).
查看示例程序
命令 rustlings list
向你展示了现有的程序,所以你可以在任何时候查看这些程序的代码,你只需要将完整路径复制到你的终端作为命令 cat 或者 less 的参数:
$ cat exercises/intro/intro1.rs
验证你的程序
现在你可以开始调试程序了。你可以使用命令 verify
来做这件事。注意 Rustlings 选择了列表里的第一个程序(intro1.rs
)并尝试去编译它,最后编译成功:
$ rustlings verify
Progress: [
> println!("Hello {}!");
一旦你做出了修改,并从源代码中去掉了注释 NOT DONE
,你可以再一次运行 rustlings verify
来编译并运行代码。
$ rustlings verify
Progress: [>-] 1/84
✅ Successfully ran exercises/intro/intro2.rs!
追踪进度
你无法在一天之内做完所有的练习,忘记练到哪也很常见。你可以执行命令 list
来查看你的练习状态。
$ rustlings list
Name Path Status
intro1 exercises/intro/intro1.rs Done
intro2 exercises/intro/intro2.rs Done
variables1 exercises/variables/variables1.rs Pending
variables2 exercises/variables/variables2.rs Pending
variables3 exercises/variables/variables3.rs Pending
[...]
运行特定的练习
如果你不想从头开始并且想要跳过一些练习,Rustlings 允许你使用命令 rustlings run
来专注特定的练习。如此可以运行指定的程序而不需要验证之前的课程。例如:
$ rustlings run intro2
Hello world!
✅ Successfully ran exercises/intro/intro2.rs
$ rustlings run variables1
敲入练习名字可能会变得乏味,但 Rustlings 为你准备了便利的命令 next
用来移向系列中的下一个练习。
$ rustlings run next
替代命令 watch
如果你不想在每次修改后还要敲一次 verify
,你可以在终端窗口中运行命令 watch
,然后再继续修改源代码以解决问题。命令 watch
会检测到这些修改,然后重新编译以查看这些问题是否被解决。
$ rustlings watch
通过调试学习
Rust 编译器以提供非常有意义的错误信息而被熟知,这些错误信息会帮助你理解在你代码中的问题。这通常意味着更快的调试。Rustlings 是练习 Rust,学会阅读错误信息,并理解 Rust 语言的优秀途径。来看看 GitHub 上 Rustlings 5.0.0 的最新功能吧。
via: https://opensource.com/article/22/7/learn-rust-rustlings
作者:Gaurav Kamathe 选题:lkxed 译者:yzuowei 校对:wxy
发表回复