Struct tor_checkable::timed::TimerangeBound
source · [−]pub struct TimerangeBound<T> { /* private fields */ }
Expand description
A TimeBound object that is valid for a specified range of time.
The range is given as an argument, as in t1..t2
.
use std::time::{SystemTime, Duration};
use tor_checkable::{Timebound, TimeValidityError, timed::TimerangeBound};
let now = SystemTime::now();
let one_hour = Duration::new(3600, 0);
// This seven is only valid for another hour!
let seven = TimerangeBound::new(7_u32, ..now+one_hour);
assert_eq!(seven.check_valid_at(&now).unwrap(), 7);
// That consumed the previous seven. Try another one.
let seven = TimerangeBound::new(7_u32, ..now+one_hour);
assert_eq!(seven.check_valid_at(&(now+2*one_hour)),
Err(TimeValidityError::Expired(one_hour)));
Implementations
sourceimpl<T> TimerangeBound<T>
impl<T> TimerangeBound<T>
sourcepub fn new<U>(obj: T, range: U) -> Self where
U: RangeBounds<SystemTime>,
pub fn new<U>(obj: T, range: U) -> Self where
U: RangeBounds<SystemTime>,
Construct a new TimerangeBound object from a given object and range.
Note that we do not distinguish between inclusive and
exclusive bounds: x..y
and x..=y
are treated the same
here.
sourcepub fn extend_tolerance(self, d: Duration) -> Self
pub fn extend_tolerance(self, d: Duration) -> Self
Adjust this time-range bound to tolerate an expiration time farther in the future.
sourcepub fn extend_pre_tolerance(self, d: Duration) -> Self
pub fn extend_pre_tolerance(self, d: Duration) -> Self
Adjust this time-range bound to tolerate an initial validity time farther in the past.
sourcepub fn dangerously_into_parts(
self
) -> (T, (Bound<SystemTime>, Bound<SystemTime>))
pub fn dangerously_into_parts(
self
) -> (T, (Bound<SystemTime>, Bound<SystemTime>))
Consume this TimeRangeBound, and return its underlying time bounds and object.
The caller takes responsibility for making sure that the bounds are actually checked.
This is an experimental API. Using it voids your stability guarantees.
It is only available when this crate is compiled with the
experimental-api
feature.
sourcepub fn dangerously_peek(&self) -> &T
pub fn dangerously_peek(&self) -> &T
Return a reference to the inner object of this TimeRangeBound, without checking the time interval.
The caller takes responsibility for making sure that nothing is actually done with the inner object that would rely on the bounds being correct, until the bounds are (eventually) checked.
This is an experimental API. Using it voids your stability guarantees.
It is only available when this crate is compiled with the
experimental-api
feature.
Trait Implementations
sourceimpl<T> Timebound<T> for TimerangeBound<T>
impl<T> Timebound<T> for TimerangeBound<T>
type Error = TimeValidityError
type Error = TimeValidityError
An error type that’s returned when the object is not timely.
sourcefn is_valid_at(&self, t: &SystemTime) -> Result<(), Self::Error>
fn is_valid_at(&self, t: &SystemTime) -> Result<(), Self::Error>
Check whether this object is valid at a given time. Read more
sourcefn dangerously_assume_timely(self) -> T
fn dangerously_assume_timely(self) -> T
Return the underlying object without checking whether it’s valid.
sourcefn check_valid_at(self, t: &SystemTime) -> Result<T, Self::Error>
fn check_valid_at(self, t: &SystemTime) -> Result<T, Self::Error>
Unwrap this Timebound object if it is valid at a given time.
sourcefn check_valid_now(self) -> Result<T, Self::Error>
fn check_valid_now(self) -> Result<T, Self::Error>
Unwrap this Timebound object if it is valid now.
sourcefn check_valid_at_opt(self, t: Option<SystemTime>) -> Result<T, Self::Error>
fn check_valid_at_opt(self, t: Option<SystemTime>) -> Result<T, Self::Error>
Unwrap this object if it is valid at the provided time t. If no time is provided, check the object at the current time. Read more
Auto Trait Implementations
impl<T> RefUnwindSafe for TimerangeBound<T> where
T: RefUnwindSafe,
impl<T> Send for TimerangeBound<T> where
T: Send,
impl<T> Sync for TimerangeBound<T> where
T: Sync,
impl<T> Unpin for TimerangeBound<T> where
T: Unpin,
impl<T> UnwindSafe for TimerangeBound<T> where
T: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
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