我推荐的布局介绍
我推荐使用 Vscode 再安装 Rust-Analyzer 插件进行刷题,记得在开刷之前先执行 rustlings lsp
来启用语法提示,下面给大家看看各个布局窗口的作用
1号区域是终端,我在里面启动了 rustlings watch
来检查进度,2号区域是各个题目(所有的题目都在 exercises 文件夹内),3号区域就是代码编辑框了,这样简简单单就可以开始了
Intro 和 Variables
Intro 部分其实没什么好看的,主要是教你如何使用 Rustlings ,在终端中提示通过编译后,你把注释中的 // I AM NOT DONE
删掉就可以了
Variables 里面的东西也比较简单,主要就是考变量的初始化语法、未初始化不能使用、如何创建可变变量、重新申明变量、常量必须指明类型这些,基本上没有什么问题,就不赘述了。
Functions 和 If
Functions 内的内容也比较基础,主要考察了函数的创建、参数的定义和传入、返回值的定义方式、通过去掉分号来返回一个值
很轻松就能解决这一块,我也认为这一块不会出现什么问题,也不多讲了。
If 的第一题体现了我很喜欢的一点,就是 Rust 中的 if 语句是有返回值的,同样可以用去掉分号来表示返回,整体也可以作为函数的返回值,因此这题我的答案是这样的
1 | pub fn bigger(a: i32, b: i32) -> i32 { |
第二题也类似,答案如下
1 | pub fn foo_if_fizz(fizzish: &str) -> &str { |
不过这里其实有一个比较有意思的地方,返回值是一个&str
,新手可能会忘记为什么这里不需要标注生命周期,请让我来解释一下,这是因为这个函数满足了生命周期省略规则,我认为这里满足的是“如果只有一个输入生命周期参数,那么它被赋予所有输出生命周期参数”,所以我觉得函数签名应该等价于 pub fn foo_if_fizz<'a>(fizzish: &'a str) -> &'a str
,不过考虑到字符串字面量的生命周期是 'static
,我认为这里也可以是 pub fn foo_if_fizz(fizzish: &str) -> &'static str
,具体是什么样希望能有大神指出。
Quiz1
终于到了第一个小测验了,这也会是第一篇的最后一题,这是关于上面的 Variables、Functions 和 If 的测验。
对于写完前面的你应该算是简简单单
1 | fn calculate_price_of_apples(num:i32)->i32{ |
本章到此就结束了