从高级程序员的角度来看,Rust 基础知识

作者 | Daniel Bulant
译者 | 弯月
出品 | CSDN(ID:CSDNnews)
刚开始从事编程工作的时候,我使用的是php 。个人感觉,PHP的语法有点笨拙且不自然,有时甚至很讨厌(为什么我必须在每个变量前加上 $ 前缀?常量前面没有$,它不是照样能理解吗?)在学习了其他语言之后,我就不喜欢PHP了,但PHP的有些地方还是还招人喜欢的,比如数组循环很容易,而且还有多种编程范式:函数式、面向对象以及trait等 。
后来,我又学习了JS,它很像C语言,而且随处可见 。期间,我也做过一些JAVA和C#的项目,但后来还是回到了JS 。
我也尝试过学习C(和 C++),虽然获得了Sololearn的证书,但是我从未真正使用过这两种语言,它们看上去似乎很复杂:快速访问内存的功能很酷,但为什么我必须使用free?为什么它不知道超出作用域时,应该自动释放内存呢?
所以,我还是比较喜欢使用JS编程,因为我无需考虑内存的问题 。而且,如今与IO相关的操作也不会限制V8的速度 。
后来,我听说了Rust,这门语言由Mozilla开发,多年来一直雄踞StackOverflow最受喜欢编程语言的榜首,甚至超过了我十分喜爱的Typescript(我之所以喜欢Typescript,主要是因为类型安全) 。所以,我就想着应该找机会试一试 。

从高级程序员的角度来看,Rust 基础知识

文章插图
从高级程序员的角度来看,Rust 基础知识

文章插图
 
学习资源我遇到的一大难题是,寻找方便理解且简短的好资源 。我不喜欢 youtube 视频,我更喜欢快速浏览一些文档,或者在通勤路上阅读一些学习资源,而且无需耗费大量流量 。
以下是我找到的资源列表:
● 《The Rust Programming Language》(
https://doc.rust-lang.org/book/):这是一本在线书籍,其中介绍了可以利用Rust实现的最常见的功能 。
● 《A Gentle Introduction To Rust》(
https://stevedonovan.github.io/rust-gentle-intro/):一本简短的书,可以在一两个小时内读完,然后再拿出一两天的时间尝试一下示例 。文中涉及的内容比较深入,但很容易掌握 。

https://www.reddit.com/r/rust/:这是一个reddit 社区(如果你遇到比较复杂的问题,则可以发布在此处,等待其他人解答 。)
● discord社区:你可以通过这个社区向其他开发人员请教有关Rust的问题 。
● Rust By Example(
https://doc.rust-lang.org/rust-by-example/index.html):其中介绍了一些示例,可以作为入门首选书 。
从高级程序员的角度来看,Rust 基础知识

文章插图
 
入门参照Rust网站(
https://www.rust-lang.org/)上的说明,使用rustup即可 。
如果想创建一个新项目,请运行 cargo init <dir>(如果位于一个空目录内,则不需要指定 <dir>) 。
然后即可从src/main.rs开始编写 。
与 C 类似,主程序都包装在 main 中 。不同之处在于,它不接受任何参数,也不应该返回一个整数,这些功能应该使用命名空间std::env 。
另外,我推荐使用CLion并安装Rust扩展 。VSCode 也有 Rust 扩展,但相比之下它的效果很差 。当然你可以使用其他的JetBrains编辑器,但 CLion 具有其他编辑器没有的一些原生功能(比如调试) 。拥有 GitHub 教育包的学生可以免费使用该插件 。
从高级程序员的角度来看,Rust 基础知识

文章插图
 
有趣的注意事项
  • 一切都有作用域
不仅是变量,就连函数和trait内部也可以使用嵌套函数和use 。这些无法从外部访问,而且如果不使用就不会出现在代码中 。至少我是这样认为的 。
  • 必须遵守的命名方案
变量和函数/方法只能使用小写字母、数字和下划线,比如snake_case,但数字不能放在开头 。
结构(和其他类型)、枚举(包括枚举值)和trait(但不包括它们的函数/方法)需要以大写字母开头,并且不能包含任何下划线 。
  • 没有增量运算符
实际上有,你可以使用i += 1 。与赋值相同,该表达式将返回赋值后的值(即,将 i 设置为 i + 1,然后返回 i) 。
没有 i++(或者 ++i、i-- 和 --i),因为这些运算符有点混乱 。
你确定如下操作的结果吗(尤其是在没有指定语言的情况下)?
a[i++ + ++i] = i++ + ++i + a[++i]问题在于,直到最近上述运算的实际行为还是未定义的,这意味着不同的编译器(甚至可能是同一个编译器的不同版本)可能会产生不同的行为 。为了解决这个问题并提高代码的可读性(Rust非常重视可读性和冗长,甚至不惜多敲几次键盘),Rust仅支持 i += 1,几乎所有人都知道该表达式的意思是变量i加1,并返回最终结果 。所以,你不必知道 i++ 实际上返回的是原始值(不是新值),而且还会加1 。


推荐阅读