Skip to main content

complete_versions_generic

Function complete_versions_generic 

Source
pub async fn complete_versions_generic(
    registry: &dyn Registry,
    package_name: &PackageName,
    prefix: &str,
    operator_chars: &[char],
    freshness: FreshnessSettings,
) -> Vec<CompletionItem>
Expand description

Generic version completion logic used by all ecosystems.

Filters versions by prefix (stripping ecosystem-specific operators), hides yanked/deprecated versions, returns up to 5 completion items.

§Arguments

  • registry - Package registry to fetch versions from
  • package_name - Name of the package
  • prefix - Partial version string typed by user (may include operators)
  • operator_chars - Ecosystem-specific version operators to strip (e.g., &['^', '~'])

§Returns

Up to 5 completion items for non-yanked versions, filtered by prefix. If no versions match the prefix, returns up to 5 non-yanked versions. The first item (latest version) is marked with “(latest)” suffix and preselected.

§Examples

use deps_core::completion::complete_versions_generic;
use deps_core::PackageName;

let freshness = deps_core::FreshnessSettings::default();

// Cargo: strip ^, ~, =, <, > operators
let items = complete_versions_generic(
    registry,
    &PackageName::new("serde"),
    "^1.0",
    &['^', '~', '=', '<', '>'],
    freshness,
).await;

// Go: no operators to strip
let items = complete_versions_generic(
    registry,
    &PackageName::new("github.com/gin-gonic/gin"),
    "v1.9",
    &[],
    freshness,
).await;