代码检查

Clippy 是一个用于捕捉 Rust 代码中常见错误的一组检查项。它是一个在 Rust 代码中运行的优秀工具。它还可以帮助提高性能,因为其中一些检查项涉及可能导致次优性能的代码模式。

鉴于自动检测问题优于手动检测,本书的其余部分将不提及 Clippy 默认检测到的性能问题。

基础

安装完成后,运行起来很简单:

cargo clippy

可以通过访问 检查项列表 并取消选中所有检查项组,除了 “Perf”,来查看所有性能检查项的完整列表。

除了使代码更快外,性能检查项建议通常会导致更简洁、更符合习惯的代码,因此即使是不经常执行的代码,也值得遵循。

相反,一些非性能检查项建议可以改善性能。例如,ptr_arg 风格检查项建议将各种容器参数更改为切片,例如将 &mut Vec<T> 参数更改为 &mut [T]。这里的主要动机是切片提供了更灵活的 API,但也可能由于减少间接性和为编译器提供更好的优化机会而导致更快的代码。 示例

禁止使用特定类型

在接下来的章节中,我们将看到有时值得避免使用某些标准库类型,而选择更快的替代方案。如果决定使用这些替代方案,则很容易出错地在某些地方意外使用标准库类型。

您可以使用 Clippy 的 disallowed_types 检查项来避免这个问题。例如,为了禁止使用标准哈希表(原因在 哈希 部分有解释),请向您的代码添加一个 clippy.toml 文件,并包含以下行。

disallowed-types = ["std::collections::HashMap", "std::collections::HashSet"]