暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

写给 Web 开发者的 Rust 语言入门教程(0.引言)

最后的叶子的奇妙小屋 2021-07-27
1915

Rust 是一门什么样的编程语言?

如果谈起近些年来最让人感兴趣的编程语言,那我一定会选择 rust 语言。在 Stack Overflow 一年一度的编程语言调查中, rust 已经连续 5 年( 2016 至 2020 )被评为最受喜爱的编程语言,而且较第二名的优势还越来越大。这足以证明它是一项值得关注和研究的新技术。从核心的特征上看, rust 也充满了它的个性:
  • rust 没有垃圾回收器,它用创造性的设计来做到内存安全、让代码远离无效的内存访问,也可以轻易进行多线程开发;

  • rust 几乎没有 runtime ,使得它可以轻易与其它代码结合,也胜任嵌入式、 WebAssembly 等特殊环境;

  • rust 以“零开销抽象”为设计目标,保持充分的代码抽象能力同时做到极优秀的性能表现;

  • rust 巧妙综合了一部分面向对象和一部分函数式编程的特征,拥有很强的抽象表达能力,可维护性上佳。

总而言之, rust 是一门很有特色的编程语言。即使你不去真正实际使用它,学习这门编程语言的过程也会给你很多启发,让你充分思考怎么样编程才更加合理。
为什么要写这系列文章?
Rust 最大的缺点是上手很难:它是一门太有个性的语言了,以至于我们很将已有的其他编程语言经验套用上去。很多在其他语言中合理的逻辑表述,在 rust 中并不被编译器允许,因而很折磨新手。希望初学者做好一定的心理准备:编译器就像无处不在的交警,它约束你的各种行为,为的是避免各种你意识到和意识不到的问题。只要适应了 rust 的编程方式,就舒服很多了。

我自然也经历过这样的过程。我是从 2018 年初开始实际编写 rust 代码的,第一个可用的项目是一个游戏:

https://github.com/LastLeaf/ludum-dare-42

我也做了其他各种各样的实践。因而我想将我的各种实际经验分享出来,组合成这一系列文章。

基于此目的,这一系列文章会更偏向于从实际经验来表述,而不像普通书本一样逐个罗列各个语言特性。比如,我会更常使用“这种时候可以这样写”这种实用的表述,而不是“综合使用这个和另一个特性”这种更抽象而精确的表述。期待后者的话,我觉得官方的教程书做的已经非常好了:

https://doc.rust-lang.org/book/

日常工作中我基本上工作于 Web/JavaScript 环境,因而我会适当结合 web 开发中常见编程语言来比较陈述(事实上, JavaScript NPM 的后台核心服务就包含 rust 代码,因为 JavaScript 性能不尽如人意)。不过,不熟悉相关语言的话也不会影响整体阅读。
先从环境准备开始吧!

Rust 有一个安装工具 `rustup` :

https://rustup.rs
按照它的导引,可以将稳定版的 rust 编译器套件安装好。如果网络比较缓慢,可以考虑使用镜像,如 USTC 的:
https://mirrors.ustc.edu.cn/help/rust-static.html
这些都有比较详细的介绍了,不同系统的安装也有一些小差异,这里就不多复述了。

安装好之后,有几个命令将可用:

  • rustc 是 rust 主编译器,事实上我们一般不会直接调用它;

  • cargo 是 rust 的包管理器(类似于 JavaScript 的 NPM ),一般通过它来间接调用 rustc ;

  • 还有 rustdoc 文档工具等,大多也是通过 cargo 来间接调用。

除此以外,配合 IDE 插件来编程会比较友好。一般可以使用 RLS 插件( Visual Studio Code 中这个插件就叫 Rust ),这个插件会帮我们自动走 rust 编译流程来检查和标注语法错误,不过 rust 编译比较慢,所以可以考虑开启 build_on_save 选项来降低自动编译的频率;也可以考虑改用 rust-analyzer 插件,它分析代码更快但还不成熟。

Hello world!

Rust 的 Hello world 程序很简单(你甚至不用自己编写!),执行:

cargo new my-hello-world

就会在 my-hello-world 子目录中包含一段 hello world 代码的 rust 项目。

进入这个子目录后,执行:

cargo run

就会自动编译+运行这个 hello world 代码。下一章我们就从这个 hello world 项目开始吧!

文章转载自最后的叶子的奇妙小屋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论