Skip to main content

PackageNaming

Trait PackageNaming 

Source
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§

Source

fn normalize_package_name(&self, name: &PackageName) -> String

Normalize package name for lookup (default: identity).

Source

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".

Implementors§