pub(crate) struct VersionReq(Vec); impl VersionReq { pub(crate) fn from_strs(versions: &[T]) -> Result where T: AsRef + std::fmt::Debug, { let mut version_reqs = vec![]; for version in versions { let version_req = semver::VersionReq::parse(version.as_ref()) .map_err(|err| format!("Could not parse version {:?}: {:?}", version, err))?; version_reqs.push(version_req); } Ok(Self(version_reqs)) } pub(crate) fn matches_any(&self, version: &semver::Version) -> bool { self.0.iter().any(|r| r.matches(version)) } }