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
sourceimpl From<RangeInclusive<Semver>> for Range
impl From<RangeInclusive<Semver>> for Range
sourcefn from(range: RangeInclusive<Semver>) -> Self
fn from(range: RangeInclusive<Semver>) -> Self
Converts to this type from the input type.
sourceimpl From<RangeToInclusive<Semver>> for Range
impl From<RangeToInclusive<Semver>> for Range
sourcefn from(range: RangeToInclusive<Semver>) -> Self
fn from(range: RangeToInclusive<Semver>) -> Self
Converts to this type from the input type.
sourceimpl RangeBounds<Semver> for Range
impl RangeBounds<Semver> for Range
sourcefn start_bound(&self) -> Bound<&Semver>
fn start_bound(&self) -> Bound<&Semver>
Start index bound. Read more
1.35.0 · sourcefn contains<U>(&self, item: &U) -> boolwhere
T: PartialOrd<U>,
U: PartialOrd<T> + ?Sized,
fn contains<U>(&self, item: &U) -> boolwhere
T: PartialOrd<U>,
U: PartialOrd<T> + ?Sized,
impl Eq for Range
impl StructuralEq for Range
impl StructuralPartialEq for Range
Auto Trait Implementations
impl RefUnwindSafe for Range
impl Send for Range
impl Sync for Range
impl Unpin for Range
impl UnwindSafe for Range
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more