昨天,《Rust语言中文》社区推送的一篇公众号关于:Rust for web development: 2 years later
的文章。可以理解为作者使用了两年Rust后的一些感悟,在此翻译中文。
《Rust用于web开发的2年后感悟》
大约2年前,我开始使用Rust开发Web服务(JSON API),我认为是时候可以摆脱先入为主的观念并分享我学到的知识了。
偏见
- Rust代码很丑陋:Rust是显式的。不可否认。但是,当我编写代码时,我的IDE可以帮到我很多,而不必按下那么多键。当我阅读代码时,这种明确性真是太棒了!没有隐藏的惊喜,没有奇怪的事情。
- 内存管理令人分心:实际上呢,没有。我没有使用那么多的词法生命周期,而是使用了智能指针。是的,因此我理解了
Box
,Rc
和Arc
之间的差异,与之同时和Node.JS
、Golang
语言相比,我的生产率没有因此受到影响。 - 编译器很麻烦:一开始是的。但是几个月后,我能够立即理解错误,并能立刻解决这些错误。今天,我真的没有花太多时间在编译器上。相反,它成为了我最好的朋友,尤其是在重构大部分代码或升级依赖项时。
- 缓慢的编译时间:我给这个说明。在
Node.JS
或Golang
中,一个中等大小的服务的Docker image
大约需要3到10分钟来构建和部署,在Rust
中大约需要30分钟。 - 生态系统还不存在:不可否认,的确是这样。缺少一些组件,例如官方的
Stripe
和AWS
开发工具包,但是社区确实很活跃,并构建了所有这些缺少的组件。
我特别值得点赞的几件事
- 静态链接非常简单:创建小的
Docker images
一件令人愉快的事情。。 Rust
会让你成为一个更好的程序员:Rust很复杂,如果你不了解它的详细工作原理,它不会放过你。掌握它需要时间和耐心,但是一旦你这样做了,你就会学到很多你永远不会像以前那样接近编程的东西。在学习Tokio
的工作原理时,我了解了Golang
的运行时是如何工作的。(心智模型学习)- 一旦它编译,通常它就可以正常工作:这是关于
Rust
我最喜欢的地方。当我的程序编译时,它按我的计划工作。注意:只要记住不要阻塞事件循环,编译器就会处理剩下的事情。您不再需要花时间为语言的怪癖编写测试。 Rust
具有很高的生产力:由于Rust
是多种范式,因此在编写复杂的业务逻辑时,由于其功能方面,它的确非常出色。
当前我正在使用的一些crates
actix-web
用于HTTP层.sqlx
用于数据库PostgreSQL
.rusoto
AWS接口服务(S3、SQS、SES)tera
用于电子邮件模板thiserror
用于错误类型处理sentry
用于错误监控
结论
Rust非常适合用于web开发,在此我强烈建议尝试一下。
取得成功是一次漫长的旅程,但完全值得,即使您不是每天都在使用它,也一定会通过学习它而成为一名更好的程序员,如果失去了,那就重新去发现编程的乐趣🤗
一句话总结:Rust生而平静。凌晨3点不再有不好的惊喜,因为依赖项更新了它的API使得不再有bug。没有更多恼人的配置自动缩放或什么。而且响应时间非常短,您的用户因此会爱上您的产品。
原文地址:https://kerkour.com/blog/rust-for-web-development-2-years-later/
From 日报小组 大闸蟹
社区学习交流平台订阅:
1
共 1 条评论, 1 页
评论区
写评论有可以学习rust web api 开源项目吗?