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- AHashSetofVersionReqspecifying the version constraints.versions- AVecofVersionrepresenting 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());