如何拒绝/禁止使用某些外部函数

pbs*_*sds 12 rust

我有一个 Rust 项目,多人参与。我们使用的外部板条箱定义了某些有问题的函数,这是许多混乱和错误的根源。我想在编译时完全拒绝/禁止在包范围内使用这些函数。有什么办法可以做到这一点吗?

Frx*_*rem 14

您可以使用disallowed_methodClippy lint 来完成此操作。(还有disallowed_type类型。)

例如,禁止Box::new

#![deny(clippy::disallowed_method)]

fn main() {
    let my_box = Box::new(123);
}
Run Code Online (Sandbox Code Playgroud)

将其添加到clippy.toml工作区根目录中:

disallowed-methods = [
    # fully qualified function/method name:
    "std::boxed::Box::new",
]
Run Code Online (Sandbox Code Playgroud)

然后运行时cargo clippy,您将收到有关使用不允许的函数的错误:

error: use of a disallowed method `alloc::boxed::Box::new`
 --> src/main.rs:4:16
  |
4 |   let my_box = Box::new(123);
  |                ^^^^^^^^^^^^^
  |
Run Code Online (Sandbox Code Playgroud)