一般这种问题实在很难回答,因为“取代”的定义不明确。
从能力上来说,可以。
Rust 足够底层、通用。在极端场景也可以放弃一点安全保障来发挥极限性能或压缩资源利用空间。
C 语言的典型场景操作系统内核也不是纯 C 的,需要一定的汇编代码。
Rust 可以和汇编共存。
生态方面几乎所有主流编程语言都支持 C ABI 规范的外部接口调用。
Rust 支持导出 C ABI 接口,可以同 C 一样成为其它语言的一部分。
是否能取代现有的 C 项目?可以,但不必要。
Rust 能和 C++ 一样与 C 共存。C/C++ 项目可以用 Rust 继续前进,不必重写。
有时候你会看到一些人说 XX(例如 Beam/JVM)没前途了得用 Rust 重写,那是不懂 Rust 的人胡乱尬吹。好像什么项目都能和他写的增删改查一样说重写就重写。
最典型的例子就是 Firefox 用 Rust 写新模块替代过时组件,而不是重新建立一个 Rust 版本的 Firefox。
C 语言太多著名又历史悠久的项目了,它们的核心代码可能直到死亡都不会被取代。但很可能和新的语言共存继续迭代版本,也很有意义。