对比 Go 语言,Rust 有什么优势和劣势?

关注者
765
被浏览
653,483

40 个回答

对于Rust和Go,我恰好都深入用过5年以上,而且都是从1.0版本开始用的,所以有点点发言权。

因为前面的答主也都回答了很多非常有价值的观点,所以我决定另辟蹊径,从使用场景角度谈谈如何选择。

  1. UI层开发:虽然这两兄弟(同时出来的双子星,也算是两兄弟吧,哈哈)都是后端语言,但是咱开源社区总是富有想象力的,各自都拥有相关的GUI、Web UI开发框架,不过从目前来看,Rust更优, Web方面Rust的WASM也发展的如火如荼,例如yew.rs,一个Rust Web应用UI开发框架,而且Rust目前还在JS的工具链领域如鱼得水,例如swc、deno等等。
  2. 应用层开发:应用层追求的是工程上的高效和性能上的兼顾,Go在这方面简直无出其右,Rust相比起来,上手难度还是太高了!而且开发效率实事求是的说,是比Go低的,应用层生态也还有待加强。
  3. 基础设施层:
    1. 消息服务、运维小工具,优先考虑Go,一个是性能基本够用,另一个就是goroutine的并发简单好用
    2. 其它监控、搜索、数据库等对于运行性能和稳定性要求很高的,优先考虑Rust,它非常值得信赖,而且性能优化上限很高
  4. 系统开发
    1. 目前linux已经将Rust列为即将支持的内核开发语言,是即C语言后第二门支持内核开发的语言,不过刚开始将主要支持驱动开发
    2. 系统工具,现在最流行的就是用Rust重写之前C、C++写的一票系统工具,还都获得了挺高的关注和很好的效果
    3. 操作系统, Rust在开发的操作系统现在有好几个,其中最有名的可能就是谷歌的fushia, Rust在其中扮演非常重要的角色

其实,看下来,你会发现,Rust注定不是大多数人的日常工具,因为在应用层开发它还不够强,而应用层开发的人数恰恰是最多的。

破局点也有,就是降低Rust的学习和使用门槛,无论是新手还是老手,可以关注下这个正在写的Rust教程, 新手可以快速入门,老手可以用来查漏补缺和作为工具书。

Rust 的 Ownership/Reference/Borrowing 几乎解决了野指针,可以有效治疗手贱。