< 返回版块

baoyachi 发表于 2021-02-26 23:27

昨天,《Rust语言中文》社区推送的一篇公众号关于:Rust for web development: 2 years later的文章。可以理解为作者使用了两年Rust后的一些感悟,在此翻译中文。

《Rust用于web开发的2年后感悟》

大约2年前,我开始使用Rust开发Web服务(JSON API),我认为是时候可以摆脱先入为主的观念并分享我学到的知识了。

偏见

  • Rust代码很丑陋:Rust是显式的。不可否认。但是,当我编写代码时,我的IDE可以帮到我很多,而不必按下那么多键。当我阅读代码时,这种明确性真是太棒了!没有隐藏的惊喜,没有奇怪的事情。
  • 内存管理令人分心:实际上呢,没有。我没有使用那么多的词法生命周期,而是使用了智能指针。是的,因此我理解了BoxRcArc之间的差异,与之同时和Node.JSGolang语言相比,我的生产率没有因此受到影响。
  • 编译器很麻烦:一开始是的。但是几个月后,我能够立即理解错误,并能立刻解决这些错误。今天,我真的没有花太多时间在编译器上。相反,它成为了我最好的朋友,尤其是在重构大部分代码或升级依赖项时。
  • 缓慢的编译时间:我给这个说明。在Node.JSGolang中,一个中等大小的服务的Docker image大约需要3到10分钟来构建和部署,在Rust中大约需要30分钟。
  • 生态系统还不存在:不可否认,的确是这样。缺少一些组件,例如官方的StripeAWS开发工具包,但是社区确实很活跃,并构建了所有这些缺少的组件。

我特别值得点赞的几件事

  • 静态链接非常简单:创建小的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 日报小组 大闸蟹

社区学习交流平台订阅:

评论区

写评论
hbgjh 2021-03-08 22:37

有可以学习rust web api 开源项目吗?

1 共 1 条评论, 1 页