pub trait Check: Sync {
// Required methods
fn name(&self) -> &str;
fn stage(&self) -> Stage;
fn scope(&self) -> Scope;
fn severity(&self) -> Severity;
fn run(&self, ctx: &Ctx<'_>) -> Outcome;
// Provided methods
fn pairing_name(&self) -> &str { ... }
fn fix(&self) -> Fix { ... }
fn reach(&self) -> Reach { ... }
}Expand description
One check, whether compiled in or declared by the repository.
Sync because pre-commit hands every check to its own thread. Both
implementations satisfy it for free, and requiring it here is what lets the
dispatcher hold &'static dyn Check without caring which kind it has.
Required Methods§
fn name(&self) -> &str
fn stage(&self) -> Stage
fn scope(&self) -> Scope
fn severity(&self) -> Severity
fn run(&self, ctx: &Ctx<'_>) -> Outcome
Provided Methods§
Sourcefn pairing_name(&self) -> &str
fn pairing_name(&self) -> &str
The name a commit-time declaration must use to pair with this gate.
Deliberately the SHORT name, and deliberately not the id: pairing is
cross-stage by definition — test declared at pre-commit pairs
with test at pre-push — so the id, which encodes the stage, is
the one key that cannot work. pre-push-cargo-test would be compared
against a GateDecl.script of cargo-test and never match, and the
failure would be silence rather than an error: the gate simply never
pairs and nobody is told why.
This is the single place where comparing short names is correct,
which is why it is a named method rather than a short_name() call
at the comparison site — that function’s own documentation says never
to compare against it, and it is right everywhere else.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".