Skip to main content

xianyun_deploy/diagnostics/builtin/
mod.rs

1//! Built-in diagnostics.
2//!
3//! Ported from `internal/diagnostics/builtin`.
4//!
5//! Go's diagnostics self-register via each file's `init()` calling
6//! `registerDiagnostic`, appending to a package-level slice at program
7//! startup. Rust has no direct equivalent of a side-effecting static
8//! initializer running before `main` (short of a `ctor`-crate
9//! dependency this crate does not otherwise need); [`all`] instead
10//! builds the list directly. Adding a new builtin diagnostic means
11//! adding it to [`all`] as well as writing its module, mirroring what
12//! the Go `init()` would otherwise have done implicitly.
13
14pub mod cluster_domain;
15pub mod orphaned_mirror_copies;
16
17use std::sync::Arc;
18
19use super::base::Diagnostic;
20
21/// Returns every registered builtin diagnostic.
22#[must_use]
23pub fn all() -> Vec<Arc<dyn Diagnostic>> {
24    vec![
25        cluster_domain::diagnostic(),
26        orphaned_mirror_copies::diagnostic(),
27    ]
28}