pub trait PackageNaming: Send + Sync {
// Provided methods
fn normalize_package_name(&self, name: &PackageName) -> String { ... }
fn validate_package_name(
&self,
_name: &str,
) -> Result<(), InvalidPackageName> { ... }
}Expand description
Ecosystem-specific package name normalization and validation.
Implementors guarantee that normalize_package_name
produces a stable lookup key for the same logical package regardless of how its name is
spelled in a manifest, and that validate_package_name is a
diagnostic lint only — never a construction-time gate. Callers may assume both methods are
cheap, side-effect-free, and safe to call on unvalidated, manifest-sourced input.
Provided Methods§
Sourcefn normalize_package_name(&self, name: &PackageName) -> String
fn normalize_package_name(&self, name: &PackageName) -> String
Normalize package name for lookup (default: identity).
Sourcefn validate_package_name(&self, _name: &str) -> Result<(), InvalidPackageName>
fn validate_package_name(&self, _name: &str) -> Result<(), InvalidPackageName>
Lints name against ecosystem-specific naming rules.
Default: permissive, always Ok(()). This is a diagnostic lint, not a
construction-time gate — PackageName::new
stays infallible regardless of what this returns. Override only to warn
on names an ecosystem’s own tooling would never accept; err on the side
of accepting anything ambiguous, since a false positive here is a
warning on a manifest the user’s actual package manager treats as fine.
§Errors
Returns InvalidPackageName carrying the reason name fails this
ecosystem’s naming rules. The default implementation never errs.
§Examples
use deps_core::lsp_helpers::PackageNaming;
struct PermissiveFormatter;
impl PackageNaming for PermissiveFormatter {}
// The default is permissive: any name, including one that would fail an
// ecosystem-specific override, is accepted.
assert!(PermissiveFormatter.validate_package_name("../not/a/real/rule").is_ok());Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".