blob: 66fe53e55ab9a4acbad15f232ef71bc7f38e20bc [file] [log] [blame]
use semver::Version;
/// A range of affected versions.
///
/// If any of the bounds is unspecified, that means ALL versions
/// in that direction are affected.
///
/// This format is defined by <https://github.com/google/osv>
#[derive(Debug, Clone)]
pub struct OsvRange {
/// Inclusive
pub introduced: Option<Version>,
/// Exclusive
pub fixed: Option<Version>,
}
impl OsvRange {
/// Returns true if the given version is affected
pub fn affects(&self, v: &Version) -> bool {
(match &self.introduced {
None => true,
Some(start_v) => v >= start_v,
}) && (match &self.fixed {
None => true,
Some(end_v) => v < end_v,
})
}
}