what_version

Function what_version 

Source
pub fn what_version(
    version_requirements: HashSet<VersionReq>,
    versions: Vec<Version>,
) -> Result<Version, NoValidVersion>
Expand description

Determines the highest version from a list of versions that satisfies all given version requirements.

§Arguments

  • version_requirements - A HashSet of VersionReq specifying the version constraints.
  • versions - A Vec of Version representing the available versions to choose from.

§Returns

  • Ok(Version) - The highest version that satisfies all the given requirements.
  • Err(()) - If no version satisfies all the given requirements.

§Examples

use std::collections::HashSet;
use semver::{Version, VersionReq};
use what_version_core::what_version;

let version_requirements: HashSet<VersionReq> = vec![
    "^2.0".parse().unwrap(),
    ">=2.1".parse().unwrap(),
    "<2.3".parse().unwrap(),
]
.into_iter()
.collect();

let versions: Vec<Version> = vec![
    "2.5.1", "2.5.0", "2.4.0", "2.3.0", "2.2.0", "2.1.1", "2.1.0", "2.0.2", "2.0.1", "2.0.0",
]
.into_iter()
.map(|ver| ver.parse().unwrap())
.collect();

let result = what_version(version_requirements, versions);

assert_eq!(result.unwrap(), Version::parse("2.2.0").unwrap());