Rust可以做C/C++所有低级工作吗? - Reddit

22-03-10 banq

有什么应用或功能是Rust不能做的,而C/C++却可以?
是否有什么东西是你不能用Rust编程语言实现的,比如说你能不能和cpu内核的显卡声卡联系
 
与C++相比,Rust有一些东西不支持,个人遇到的两个是:

也许/可能还有更多,特别是如果你算上那些不稳定的东西。我认为这些特性是很重要的,但是没有这些特性,你当然可以用Rust构建几乎所有C++的东西,尽管可能有一些变通。

另一方面,Rust给了你C++不能给你的东西。借款检查器、不安全的代码隔离、对每一个可变引用的限制、更易于使用的构建和依赖性管理,这只是其中几个重要的例子。

对于那些说Rust可以做所有C++/计算机可以做的事情的人,因为有内联asm。在我看来,这是个很糟糕的借口。
当然,有人可以发明一种新的语言并只实现内联asm。
但是这个人是否会创造出一种与C++功能相当的语言?在我看来,不会。
 
其他还有:
  • 为非常奇特的目标进行编译。除了缺少编译器支持,Rust也很难支持uintptr_t和size_t不同的目标,或者不使用8位字节寻址内存和奇怪的互斥宽度的目标。另外Rust目标上的浮点支持必须使用IEEE 754 binary32和binary64浮点类型。C和C++支持所有这些。
  • 与一些C语言API的接口。Rust不支持位域类型,针对C的位域是相当棘手的,但并非不可能。
  • 花哨的编译选项。尤其是C有一系列Rust不支持的编译选项,比如fast-math。
  • Rust 目前也不支持 16 位浮点,这已成为神经网络的重要性能优化。

猜你喜欢