use semver::{Version, VersionReq};
fn matches_version_without_prerelease(version_req: &VersionReq, version: &Version) -> bool {
version_req.matches(version) && version.pre.is_empty()
}
fn main() {
let req = VersionReq::parse(">=1.0.0").expect("Invalid version requirement");
let versions = vec![
Version::parse("1.0.0").unwrap(),
Version::parse("1.1.0-alpha").unwrap(),
Version::parse("1.2.0-beta.2").unwrap(),
Version::parse("1.2.0").unwrap(),
];
let valid_versions: Vec<_> = versions
.into_iter()
.filter(|v| matches_version_without_prerelease(&req, v))
.collect();
for version in valid_versions {
println!("Valid version: {}", version);
}
}