最近这阵子,我被老王那孙子给气着了。他老在我耳边念叨,说我之前那个用Python写的后台慢得跟蜗牛似的,让他做个数据抓取都得等半天。他推荐了个玩意儿,叫“Rust”,非说这玩意儿跑起来跟飞似的。我一听“Rust”,中文翻译过来就是“腐蚀”,当时就蒙了,这名字听着就不靠谱,像啥病毒软件。但架不住老王天天吹,我寻思着,光听他说没用,我得自己上手搞一下,看看这“腐蚀”到底在哪下载,是不是真有这么神。
第一步:搞清楚这玩意儿到底叫在哪能找到
我当时真以为是个什么黑科技软件,就在搜索引擎上敲了“腐蚀 软件 下载”。出来一堆游戏加速器和防病毒的。搞了半天,翻了好几页,才在一个不起眼的技术论坛里看到有人提到“Rust编程语言”。我这才恍然大悟,原来这玩意儿是门语言,不是什么App。名字翻译过来太坑人了,浪费了我半小时时间。
我立马调转方向,搜了“Rust 官方”。
- 我点进了一个看着挺专业的网站,结果发现是卖农具的,因为Rust在英文里也有铁锈的意思。当时气得我差点把鼠标摔了。
- 后来我找到了真正的官网,那个界面清清爽爽,一看就是正经搞技术的。上面写着,这语言是用来搞高性能、安全并发的,听着挺高大上。
- 我直接拉到了下载页面,上面推荐了一个叫
rustup的工具,说是管理Rust版本用的。这跟用Python的pip,或者Go的go install感觉差不多,都是一套工具链。
二话不说,直接安装,结果被网络卡住了
我下载了那个安装程序,双击就跑起来了。这安装程序问我是不是要自定义安装,我寻思着我一个新手,自定义个锤子,直接选了默认安装。然后它就开始跑进度条了。安装步骤倒是挺简单的,跟装个普通软件没啥区别。
我家网络是老小区,网速一直不怎么样。这一下载,进度条跟便秘一样,卡在那里好久。我打开了任务管理器看了一眼,发现它是在从一个国外地址下载一大堆组件。我等了快半小时,终于把核心的编译器和标准库给拖下来了。期间我甚至去泡了杯茶,它进度条才勉强动了一点点。我当时就想,就这下载速度,如果老王让我用这个做紧急部署,黄花菜都凉了。
等它装完,命令行界面显示了一行字,让我设置环境变量。我之前装Java和Go的时候,环境变量总是搞得我头大。这回我仔细瞅了瞅它给的路径,发现它自己已经帮我加好了。我只是重启了一下终端,试着敲了rustc --version,屏幕上立马弹出了版本号,比如rustc 1.78.0,当时心里石头总算落了地。总算是把环境这事儿给搞定了。
试试手,跑个“你好世界”,感受一下这编译过程
既然环境都搭好了,总得写点东西看看。我参考了官网的入门指南,新建了一个文件夹叫corrosion_test。然后我创建了一个文件叫。不得不说,这.rs的后缀看着挺简洁。
代码结构跟C语言有点像,但又多了很多怪里怪气的关键字。我照着抄了那个经典代码:
fn main() {
println!("Hello, world!");
我回到了终端,在那个目录下执行了rustc *。这里又出问题了。这个编译过程,比我预想的要慢得多。我之前跑Go的简单程序,几乎是秒出结果。这个Rust的编译器吭哧吭哧跑了好几秒,屏幕上还不断跳出一些我看不懂的提示,搞得我心惊胆战,以为又哪里装错了。等它跑完,终端终于安静了,在目录下生成了一个可执行文件。
我运行了一下那个文件,屏幕上清清楚楚地显示了“Hello, world!”。
我测试了一下这个生成的文件大小,哇,比我用Go编译出来的要大不少,但是它完全是独立的,不需要依赖任何运行时环境,这一点倒是挺方便部署的。整个过程,从被老王忽悠,到我自己动手下载、安装,再到第一个程序跑起来,前后花了差不多两个小时。
虽然安装过程慢得让人焦躁,编译速度也慢得让我有点意外,但至少证明,这“腐蚀”不是什么虚头巴脑的东西,是实实在在能跑起来的。我发现它在第一次编译时非常慢,但第二次修改代码后,增量编译的速度就好多了。下一步,我打算用它重写老王一直吐槽的那个数据抓取模块,看看它到底能不能比Python快上十倍。等我有了新进展,再来跟大伙儿分享我的新坑。搞技术就是这样,得不断地折腾和尝试新东西,才能知道哪个好使。