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:
255bytes (on 8-bit machines)4096bytes (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.
impl Eq for Range
impl StructuralPartialEq for Range
Auto Trait Implementations§
impl Freeze for Range
impl RefUnwindSafe for Range
impl Send for Range
impl Sync for Range
impl Unpin for Range
impl UnwindSafe for Range
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more