Rust:一个不再有 C/C+的,实现安全实时软件的未来(11)

下面是这两种类型的实现结合得出的通用函数:

尖括号中的是类型参数,这一点和 C++ 中相同,但与 C++ 模板的不同之处在于我们可以使函数参数化。“此函数只适用于 Rateable 类型”的说法在 Rust 中是可以的,但在 C++ 中却毫无意义,这带来的后果不仅限于可读性。类型参数上的 trait bound 意味着 Rust 的编译器可以只对函数进行一次类型检查,避免了单独检查每个具体的实现,从而缩短编译时间并简化了编译错误信息。

Trait 也可以动态使用,虽然有的时候是必须的,但是并不推荐,因为会增加运行开销,所以作者在本文中并没有详细提及。Trait 中另一大部分就是它的互通性,例如标准库中的 Display 和 Add trait。实现 add trait 意味着可以重载运算符 +,实现 display trait 则意味着可以格式化输出显示。

Rust 的工具

C/C++ 中并没有用于管理依赖的标准,倒是有不少工具可以提供帮助,但是它们的口碑都不是很好。基础的 Makefiles 用于构建系统非常灵活,但在维护上就是一团垃圾。CMake 减少了维护的负担,但是它的灵活性较弱,又很让人烦恼。

推荐阅读