sort_versions_deterministic

Function sort_versions_deterministic 

Source
pub fn sort_versions_deterministic(pairs: &mut [(String, Version)])
Expand description

Sorts tag-version pairs by semantic version (descending), with deterministic tie-breaking.

When versions compare equal, uses tag name (lexicographic order) as a tie-breaker. This ensures consistent ordering across runs, which is critical for reproducible dependency resolution.

§Arguments

  • pairs - Mutable reference to vector of (tag_name, semver::Version) pairs

§Examples

use semver::Version;

let mut versions = vec![
    ("a-v1.0.0".to_string(), Version::new(1, 0, 0)),
    ("z-v1.0.0".to_string(), Version::new(1, 0, 0)),  // Same version
    ("b-v2.0.0".to_string(), Version::new(2, 0, 0)),
];
agpm_cli::resolver::version_resolver::sort_versions_deterministic(&mut versions);
// After sorting: b-v2.0.0 (highest), then a-v1.0.0, z-v1.0.0 (alphabetical)