现代编程语言有很多,在我的编程学习里面有小学阶段的 LOGO , 中学阶段的 Pascal ,也有大学阶段的 C/C++、Java、.NET,再到工作的 Objective-C 、Swift、Go、Kotlin,以及 Rust 。2021年,4个月的人工智能课程结束后,我在想有什么技能可以带给各位 Reactor 的小伙伴。我有想过是我司三朵云上很 Cool 的产品,还是一些解决方案的实践。在权衡后,我决定给大家带来 Rust,作为2022年新的开始。

为什么选择 Rust?

不知从什么时候开始,每个语言诞生都在说自己的高性能、可靠性和生产力。而当你真正入坑后,总会有各种抱怨。我了解 Rust 是3年前衣明志老师介绍的。他是怎么安利的我忘记了,不过我就踏入了这个坑。

Rust 的语法和 C++ 很像, 具有高速和内存安全性。Rust 是系统级别的编程语言。
我们来看看 Rust 和 C/C++ 的一些关于内存安全的对比:

int checkStr()
 {
char *str = strdup("Hello Reactor!");
return 0;
 }

在 C/C++ 中,上述语法忘记了释放指针,导致了内存泄露,这是一个非常基础的问题。但在 Rust 中,我们可以通过作用域去避免同样的问题。

fn checkStr(){
     let str = String::from("Hello Reactor!");
}

单从内存安全性上,Rust 就足够好用。另外,Rust 还可以通过 Crates 去管理相关的包。整个项目代码从项目建立、构建到测试,再到运行部署的周期,对比在 C/C++ 开发时的杂乱无章,真的是太舒服了。

用什么工具开发 Rust?

一个好的工具,可以提升开发的效率。开发 Rust 我还是强烈推荐 Visua Studio Code。里面有非常完善的 Rust 支持。只需将 rust-analyzer、CodeLLDB以及crates 这三大插件安装好,你就可以非常高效地完成 Rust 的开发。
CA周记 2022年的第一课 - Rust-LMLPHP

我的课堂上还使用了另外一种方式——Jupyter Notebook。通过 Notebook,你可以完成一些相关的语法学习,以及做一些数据分析。
CA周记 2022年的第一课 - Rust-LMLPHP

课后也有一些小伙伴问我如何安装。在这里我附上安装步骤。

Python 环境安装和基本的 Jupyter Lab 安装

请参考我之前的文档

Windows 安装

Linux/macOS 安装

组件安装

cargo install evcxr_jupyter
evcxr_jupyter –install

注意:这里有不同的系统配置要求,更多内容请参考: https://github.com/google/evcxr/blob/main/evcxr_jupyter/README.md

Rust 的应用

Rust 的应用场景很广泛。基于自身特点,常用于一些底层、后端服务,以及网络编程的工作。官方也列出了一些主要的应用场景:
CA周记 2022年的第一课 - Rust-LMLPHP

在这次系列课程中,我主要针对 Web 后端的工作做了相关介绍,当然也提及到了WebAssembly 。建议大家可以回看我的 Rust 课程第二、第三讲。

Rust 的 Web 框架

Actix 和 Rocket 都是非常成熟的 Rust 页面服务框架,两者不相伯仲。我的课程以 Actix 框架为主 ,当然你也可以尝试一下 Rocket 这个框架。
以下是两个框架的介绍,可以根据实际情况进行框架的选择。
CA周记 2022年的第一课 - Rust-LMLPHP

我个人比较注重架构,好的架构是一个好的项目的开始。做后端服务离不开 MVC 这个熟悉的模式,结合 Rust 的包的知识,我们可以用 Actix 的后端解决方案架构出一个非常好的项目。建议大家在架构 Rust 后端服务时,可以参考我的 Rust 课程第三讲。

课程的遗漏

三周的课程是非常短的,而 Rust 涉及的点还有很多。例如如何用 Dapr,以及 Web Assbembly 的应用等也是我想讲的内容。
接下来我会通过 Workshop 的方式继续同大家分享,敬请期待!

最后附上这个系列课程的三讲内容:
Rust 编程语言 - Rust 基础学习
Rust 编程语言 - Rust 网页编程
Rust 编程语言 - Rust 网络编程&IoT编程

03-15 10:39