Struct dia_semver::Range
source · pub struct Range { /* private fields */ }
Expand description
Range
A range can be respresented in string, following these rules:
-
Start and end are placed inside one of
[]
,[)
…, separated by a comma. -
[
and]
are inclusive. -
(
and)
are exclusive. -
White spaces can be included. They will be ignored by parser.
-
For unbounded ranges, start and/or end indexes must be inclusive.
-
For protection against flood attack, max length of the string is one of:
255
bytes (on 8-bit machines)4096
bytes (on larger machines)
Examples
use core::ops::RangeBounds;
use core::str::FromStr;
use dia_semver::{Range, Semver};
// An empty range
let range = Range::from(Semver::new(0, 1, 2)..Semver::new(0, 0, 0));
assert!(range.is_empty());
// Only one single semver
let range = Range::from(Semver::new(0, 1, 2));
assert!(range.contains(&Semver::new(0, 1, 2)));
assert!(range.contains(&Semver::new(0, 1, 3)) == false);
// Inclusive range
let range = Range::from_str("[0.1.2, 0.2.0-beta]")?;
assert!(range.contains(&Semver::new(0, 1, 3)));
assert!(range.contains(&Semver::from_str("0.2.0-alpha")?));
assert!(range.contains(&Semver::new(0, 2, 0)) == false);
// Exclusive range
let range = Range::from(Semver::new(0, 1, 2)..Semver::new(0, 2, 0));
assert!(range.contains(&Semver::new(0, 2, 0)) == false);
// Unbounded ranges
assert!(Range::from(..).contains(&Semver::new(1, 2, 0)));
assert!(Range::from_str("[ , 1]")?.contains(&Semver::from(1_u8)));
assert!(Range::from_str("[ , 1)")?.contains(&Semver::from(1_u8)) == false);
Implementations§
Trait Implementations§
source§impl From<RangeInclusive<Semver>> for Range
impl From<RangeInclusive<Semver>> for Range
source§fn from(range: RangeInclusive<Semver>) -> Self
fn from(range: RangeInclusive<Semver>) -> Self
Converts to this type from the input type.
source§impl From<RangeToInclusive<Semver>> for Range
impl From<RangeToInclusive<Semver>> for Range
source§fn from(range: RangeToInclusive<Semver>) -> Self
fn from(range: RangeToInclusive<Semver>) -> Self
Converts to this type from the input type.