pub struct TimeRange<T = TimeExpr> {
pub start: TimeBound<T>,
pub end: TimeBound<T>,
}Expand description
The structural representation of the Zenoh Time DSL, which may adopt one of two syntax:
- the “range” syntax:
<ldel: '[' | ']'><start: TimeExpr?>..<end: TimeExpr?><rdel: '[' | ']'> - the “duration” syntax:
<ldel: '[' | ']'><start: TimeExpr>;<duration: Duration><rdel: '[' | ']'>, which is equivalent to<ldel><start>..<start+duration><rdel>
Durations follow the <duration: float><unit: "u", "ms", "s", "m", "h", "d", "w"> syntax.
Where TimeExpr itself may adopt one of two syntaxes:
- the “instant” syntax, which must be a UTC RFC3339 formatted timestamp.
- the “offset” syntax, which is written
now(<sign: '-'?><offset: Duration?>), and allows to specify a target instant as an offset applied to an instant of evaluation. These offset are resolved at the evaluation site.
In range syntax, omitting <start> and/or <end> implies that the range is unbounded in that direction.
Exclusive bounds are represented by their respective delimiters pointing towards the exterior. Interior bounds are represented by the opposite.
The comparison step for instants is the nanosecond, which makes exclusive and inclusive bounds extremely close.
The [<start>..<end>[ pattern may however be useful to guarantee that a same timestamp never appears twice when
iteratively getting values for [t0..t1[, [t1..t2[, [t2..t3[…
Fields§
§start: TimeBound<T>§end: TimeBound<T>Implementations§
Source§impl TimeRange<TimeExpr>
impl TimeRange<TimeExpr>
Sourcepub fn resolve_at(self, now: SystemTime) -> TimeRange<SystemTime>
pub fn resolve_at(self, now: SystemTime) -> TimeRange<SystemTime>
Resolves the offset bounds in the range using now as reference.
Sourcepub fn resolve(self) -> TimeRange<SystemTime>
pub fn resolve(self) -> TimeRange<SystemTime>
Resolves the offset bounds in the range using SystemTime::now as reference.
Sourcepub fn contains(&self, instant: SystemTime) -> bool
pub fn contains(&self, instant: SystemTime) -> bool
Returns true if the provided instant belongs to self.
This method performs resolution with SystemTime::now if the bounds contain an “offset” time expression.
If you intend on performing this check multiple times, it may be wiser to resolve self first, and use
TimeRange::<SystemTime>::contains instead.
Source§impl TimeRange<SystemTime>
impl TimeRange<SystemTime>
Sourcepub fn contains(&self, instant: SystemTime) -> bool
pub fn contains(&self, instant: SystemTime) -> bool
Returns true if the provided instant belongs to self.
Trait Implementations§
Source§impl Display for TimeRange<SystemTime>
impl Display for TimeRange<SystemTime>
Source§impl From<TimeRange<SystemTime>> for TimeRange<TimeExpr>
impl From<TimeRange<SystemTime>> for TimeRange<TimeExpr>
Source§fn from(value: TimeRange<SystemTime>) -> Self
fn from(value: TimeRange<SystemTime>) -> Self
impl<T: Copy> Copy for TimeRange<T>
impl<T: Eq> Eq for TimeRange<T>
impl<T> StructuralPartialEq for TimeRange<T>
Auto Trait Implementations§
impl<T> Freeze for TimeRange<T>where
T: Freeze,
impl<T> RefUnwindSafe for TimeRange<T>where
T: RefUnwindSafe,
impl<T> Send for TimeRange<T>where
T: Send,
impl<T> Sync for TimeRange<T>where
T: Sync,
impl<T> Unpin for TimeRange<T>where
T: Unpin,
impl<T> UnsafeUnpin for TimeRange<T>where
T: UnsafeUnpin,
impl<T> UnwindSafe for TimeRange<T>where
T: UnwindSafe,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more