Struct TimeWith
struct TimeWith { ... }
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: 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: 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: 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: 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: Self, millisecond: i16) -> TimeWithSet the millisecond field on a
Time.One can access this value via
Time::millisecond.This overrides any previous millisecond settings.
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: Self, microsecond: i16) -> TimeWithSet the microsecond field on a
Time.One can access this value via
Time::microsecond.This overrides any previous microsecond settings.
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: Self, nanosecond: i16) -> TimeWithSet the nanosecond field on a
Time.One can access this value via
Time::nanosecond.This overrides any previous nanosecond settings.
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: 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.
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::
impl Clone for TimeWith
fn clone(self: &Self) -> TimeWith
impl Copy for TimeWith
impl Debug for TimeWith
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
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
impl<T> Any for TimeWith
fn type_id(self: &Self) -> TypeId
impl<T> Borrow for TimeWith
fn borrow(self: &Self) -> &T
impl<T> BorrowMut for TimeWith
fn borrow_mut(self: &mut Self) -> &mut T
impl<T> CloneToUninit for TimeWith
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8)
impl<T> From for TimeWith
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for TimeWith
fn to_owned(self: &Self) -> Tfn clone_into(self: &Self, target: &mut T)
impl<T, U> Into for TimeWith
fn into(self: Self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom for TimeWith
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto for TimeWith
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>