Struct TimeWith
pub struct TimeWith { /* private fields */ }
A builder for setting the fields on a Time.
This builder is constructed via Time::with.
Example
Unlike Date, a Time is valid for all possible valid values of its
fields. That is, there is no way for two valid field values to combine
into an invalid Time. So, for Time, this builder does have as much of
a benefit versus an API design with methods like Time::with_hour and
Time::with_minute. Nevertheless, this builder permits settings multiple
fields at the same time and performing only one validity check. Moreover,
this provides a consistent API with other date and time types in this
crate.
use time;
let t1 = time;
let t2 = t1.with.hour.minute.millisecond.build?;
assert_eq!;
# Ok::
Implementations
impl TimeWith
fn build(self) -> Result<Time, Error>Create a new
Timefrom the fields set on this configuration.An error occurs when the fields combine to an invalid time. This only occurs when at least one field has an invalid value, or if at least one of
millisecond,microsecondornanosecondis set andsubsec_nanosecondis set. Otherwise, if all fields are valid, then the entireTimeis guaranteed to be valid.For any fields not set on this configuration, the values are taken from the
Timethat originally created this configuration. When no values are set, this routine is guaranteed to succeed and will always return the original time without modification.Example
This creates a time but with its fractional nanosecond component stripped:
use time; let t = time; assert_eq!; # Ok::Example: error for invalid time
use time; let t = time; assert!;Example: error for ambiguous sub-second value
use time; let t = time; // Setting both the individual sub-second fields and the entire // fractional component could lead to a misleading configuration. So // if it's done, it results in an error in all cases. Callers must // choose one or the other. assert!;fn hour(self, hour: i8) -> TimeWithSet the hour field on a
Time.One can access this value via
Time::hour.This overrides any previous hour settings.
Errors
This returns an error when
TimeWith::buildis called if the given hour is outside the range0..=23.Example
use time; let t1 = time; assert_eq!; let t2 = t1.with.hour.build?; assert_eq!; # Ok::fn minute(self, minute: i8) -> TimeWithSet the minute field on a
Time.One can access this value via
Time::minute.This overrides any previous minute settings.
Errors
This returns an error when
TimeWith::buildis called if the given minute is outside the range0..=59.Example
use time; let t1 = time; assert_eq!; let t2 = t1.with.minute.build?; assert_eq!; # Ok::fn second(self, second: i8) -> TimeWithSet the second field on a
Time.One can access this value via
Time::second.This overrides any previous second settings.
Errors
This returns an error when
TimeWith::buildis called if the given second is outside the range0..=59.Example
use time; let t1 = time; assert_eq!; let t2 = t1.with.second.build?; assert_eq!; # Ok::fn millisecond(self, millisecond: i16) -> TimeWithSet the millisecond field on a
Time.One can access this value via
Time::millisecond.This overrides any previous millisecond settings.
Note that this only sets the millisecond component. It does not change the microsecond or nanosecond components. To set the fractional second component to nanosecond precision, use
TimeWith::subsec_nanosecond.Errors
This returns an error when
TimeWith::buildis called if the given millisecond is outside the range0..=999, or if both this andTimeWith::subsec_nanosecondare set.Example
This shows the relationship between
Time::millisecondand [Time::subsec_nanosecond]:use time; let t = time.with.millisecond.build?; assert_eq!; # Ok::fn microsecond(self, microsecond: i16) -> TimeWithSet the microsecond field on a
Time.One can access this value via
Time::microsecond.This overrides any previous microsecond settings.
Note that this only sets the microsecond component. It does not change the millisecond or nanosecond components. To set the fractional second component to nanosecond precision, use
TimeWith::subsec_nanosecond.Errors
This returns an error when
TimeWith::buildis called if the given microsecond is outside the range0..=999, or if both this andTimeWith::subsec_nanosecondare set.Example
This shows the relationship between
Time::microsecondand [Time::subsec_nanosecond]:use time; let t = time.with.microsecond.build?; assert_eq!; # Ok::fn nanosecond(self, nanosecond: i16) -> TimeWithSet the nanosecond field on a
Time.One can access this value via
Time::nanosecond.This overrides any previous nanosecond settings.
Note that this only sets the nanosecond component. It does not change the millisecond or microsecond components. To set the fractional second component to nanosecond precision, use
TimeWith::subsec_nanosecond.Errors
This returns an error when
TimeWith::buildis called if the given nanosecond is outside the range0..=999, or if both this andTimeWith::subsec_nanosecondare set.Example
This shows the relationship between
Time::nanosecondand [Time::subsec_nanosecond]:use time; let t = time.with.nanosecond.build?; assert_eq!; # Ok::fn subsec_nanosecond(self, subsec_nanosecond: i32) -> TimeWithSet the subsecond nanosecond field on a
Time.If you want to access this value on
Time, then useTime::subsec_nanosecond.This overrides any previous subsecond nanosecond settings.
Note that this sets the entire fractional second component to nanosecond precision, and overrides any individual millisecond, microsecond or nanosecond settings. To set individual components, use
TimeWith::millisecond,TimeWith::microsecondorTimeWith::nanosecond.Errors
This returns an error when
TimeWith::buildis called if the given subsecond nanosecond is outside the range0..=999,999,999, or if both this and one ofTimeWith::millisecond,TimeWith::microsecondorTimeWith::nanosecondare set.Example
This shows the relationship between constructing a
Timevalue with subsecond nanoseconds and its individual subsecond fields:use time; let t1 = time; let t2 = t1.with.subsec_nanosecond.build?; assert_eq!; assert_eq!; assert_eq!; # Ok::
Trait Implementations
impl Clone for TimeWith
fn clone(&self) -> Self
impl Copy for TimeWith
impl Debug for TimeWith
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Auto Trait Implementations
impl Freeze for TimeWith
impl RefUnwindSafe for TimeWith
impl Send for TimeWith
impl Sync for TimeWith
impl Unpin for TimeWith
impl UnsafeUnpin for TimeWith
impl UnwindSafe for TimeWith
Blanket Implementations
impl<T> Any for TimeWith
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for TimeWith
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for TimeWith
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneToUninit for TimeWith
where
T: Clone,
unsafe fn clone_to_uninit(&self, dest: *mut u8)
impl<T> From<T> for TimeWith
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for TimeWith
where
T: Clone,
type Owned = T;fn to_owned(&self) -> Tfn clone_into(&self, target: &mut T)
impl<T, U> Into<U> for TimeWith
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for TimeWith
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for TimeWith
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>