Rust 与 C++ 的比较 C++ 能做什么而 Rust 不能?

2025-06-04

Rust 与 C++ 的比较C++ 能做什么而 Rust 不能?

首先我想说,这是我的两门母语。我对它们都怀有敬意,并且无论如何都会专注于它们。我知道这个问题有点棘手,而且我对这两门语言都是初学者。

我指的不是那些应该用JavaScriptC#之类的语言——尽管Rust这些方面其实也还不错,而且还在不断改进。我甚至没有谈论C语言,尽管我认为最终我们或许也能就此展开讨论。我明确地断言,Rust 完全可以与C++正面交锋

话虽如此,随着我对 C++ 的了解越来越多,我越来越意识到自己对 C++ 和编程本身的了解是多么匮乏。在我看来,受Hindley-Milner启发的类型系统与 Rust 所针对的内存精细控制完美契合,非常适合 Rust 所针对的数据操作。我非常乐意听别人指出我错在哪里。

我最近发布了一篇关于 Rust 树的文章,其中介绍了一种解决 Rust 限制问题的变通方法,但我提到的第一个替代方案是unsafe。当然,总是需要直接操作内存。许多标准库工具本质上是用unsafeRust 实现的,并编写了经过优秀 Rust 团队和整个开源软件社区审核的安全 API。有很多lib*-sys本质上是相同东西的 crate。任何使用 C 语言的外部接口 (FFI) 都会包含unsafe原始指针。

任何工具,无论是开源软件还是专有软件,都是如此,所以才被认为是“安全的”,对吧?聪明人会怎么看呢?

我看到有人对模板推崇备至,但对我来说,它们只是Rust 的一个笨重特性。模板能做什么,而 Rust 特性 + 宏做不到?说到这,OCaml中的函子Jane Street甚至比 Haskell 或 C++ 更能证明这个工具的强大之处。OCaml 本身就是一门很棒的UNIX/Linux 编程语言。C++ 的地位稳固,但新的代码层出不穷。我是不是误解了 C++ 的强大之处?

为什么不抛开所有模因,用 Rust 编写所有全新的适用领域软件,并在需要的地方编写 Rust 接口?

我理解 C++ 默认的限制较少,允许人们在更熟悉的地方覆盖机器。我不明白为什么这会阻碍一种比现有语言更先进的新基础语言的出现,以及为什么 Rust 不是。

照片由 Edvin Johansson 在 Unsplash 上拍摄

文章来源:https://dev.to/decidously/what-does-c-do-that-rust-doesn-t-4h2g
PREV
学习 NodeJS 的十大理由
NEXT
Rust 你自己的小 Lisp