Enum Weekday
enum Weekday
A representation for the day of the week.
The default representation follows ISO 8601. That is, the week starts with
Monday and numbering starts at 1. However, the various constructors and
accessors support using other schemes in wide use:
Weekday::from_monday_zero_offsetbuilds a weekday from a scheme that starts the week on Monday at offset0, whileWeekday::to_monday_zero_offsetconverts to it.Weekday::from_monday_one_offsetbuilds a weekday from a scheme that starts the week on Monday at offset1(the default representation), whileWeekday::to_monday_one_offsetconverts to it.Weekday::from_sunday_zero_offsetbuilds a weekday from a scheme that starts the week on Sunday at offset0, whileWeekday::to_sunday_zero_offsetconverts to it.Weekday::from_sunday_one_offsetbuilds a weekday from a scheme that starts the week on Sunday at offset1, whileWeekday::to_sunday_one_offsetconverts to it.
Arithmetic
This type provides Weekday::wrapping_add and Weekday::wrapping_sub
for performing wrapping arithmetic on weekdays. These are also available
via operator overloading:
use Weekday;
assert_eq!;
assert_eq!;
Comparisons
This type provides Eq and PartialEq trait implementations for easy
comparison:
use Weekday;
assert_eq!;
assert_ne!;
But this type specifically does not provide Ord or PartialOrd trait
implementations. Such an implementation would require deciding whether
Sunday is less than Monday or greater than Monday. The former case
corresponds to a week scheme where Sunday is the first day in the week,
where as the latter corresponds to a scheme where Monday is the first day.
Since both schemes are in widespread use, it would be inappropriate to bake
in an assumption of one or the other. Instead, one can convert a weekday
into the desired offset scheme, and then compare the offsets:
use Weekday;
let = ;
assert!;
assert!;
Example
This example shows the result of converting to and from different schemes:
use Weekday;
// The different representations of Monday.
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
// The different representations of Sunday.
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
Variants
-
Monday -
Tuesday -
Wednesday -
Thursday -
Friday -
Saturday -
Sunday
Implementations
impl Weekday
fn from_monday_zero_offset(offset: i8) -> Result<Weekday, Error>Convert an offset to a structured
Weekday.The offset should be from a scheme where the first day of the week is Monday and starts numbering at
0.Errors
This returns an error when the given offset is not in the range
0..=6.Example
use Weekday; let weekday = from_monday_zero_offset?; assert_eq!; assert!; assert!; # Ok::fn from_monday_one_offset(offset: i8) -> Result<Weekday, Error>Convert an offset to a structured
Weekday.The offset should be from a scheme where the first day of the week is Monday and starts numbering at
1.Errors
This returns an error when the given offset is not in the range
1..=7.Example
use Weekday; let weekday = from_monday_one_offset?; assert_eq!; assert!; assert!; # Ok::fn from_sunday_zero_offset(offset: i8) -> Result<Weekday, Error>Convert an offset to a structured
Weekday.The offset should be from a scheme where the first day of the week is Sunday and starts numbering at
0.Errors
This returns an error when the given offset is not in the range
0..=6.Example
use Weekday; let weekday = from_sunday_zero_offset?; assert_eq!; assert!; assert!; # Ok::fn from_sunday_one_offset(offset: i8) -> Result<Weekday, Error>Convert an offset to a structured
Weekday.The offset should be from a scheme where the first day of the week is Sunday and starts numbering at
1.Errors
This returns an error when the given offset is not in the range
1..=7.Example
use Weekday; let weekday = from_sunday_one_offset?; assert_eq!; assert!; assert!; # Ok::fn to_monday_zero_offset(self: Self) -> i8Returns this weekday as an offset.
The offset returned is computed based on a week that starts with Monday and begins numbering at
0.Example
use Weekday; assert_eq!; # Ok::fn to_monday_one_offset(self: Self) -> i8Returns this weekday as an offset.
The offset returned is computed based on a week that starts with Monday and begins numbering at
1.Example
use Weekday; assert_eq!; # Ok::fn to_sunday_zero_offset(self: Self) -> i8Returns this weekday as an offset.
The offset returned is computed based on a week that starts with Sunday and begins numbering at
0.Example
use Weekday; assert_eq!; # Ok::fn to_sunday_one_offset(self: Self) -> i8Returns this weekday as an offset.
The offset returned is computed based on a week that starts with Sunday and begins numbering at
1.Example
use Weekday; assert_eq!; # Ok::fn next(self: Self) -> WeekdayReturns the next weekday, wrapping around at the end of week to the beginning of the week.
This is a convenience routing for calling
Weekday::wrapping_addwith a value of1.Example
use Weekday; assert_eq!; assert_eq!; assert_eq!;fn previous(self: Self) -> WeekdayReturns the previous weekday, wrapping around at the beginning of week to the end of the week.
This is a convenience routing for calling
Weekday::wrapping_subwith a value of1.Example
use Weekday; assert_eq!; assert_eq!; assert_eq!;fn since(self: Self, other: Weekday) -> i8Returns the number of days from
otherto this weekday.Adding the returned number of days to
otheris guaranteed to sum to this weekday. The number of days returned is guaranteed to be in the range0..=6.Example
use Weekday; assert_eq!; assert_eq!; assert_eq!; assert_eq!;fn until(self: Self, other: Weekday) -> i8Returns the number of days until
otherfrom this weekday.Adding the returned number of days to this weekday is guaranteed to sum to
otherweekday. The number of days returned is guaranteed to be in the range0..=6.Example
use Weekday; assert_eq!; assert_eq!; assert_eq!; assert_eq!;fn wrapping_add<D: Into<i64>>(self: Self, days: D) -> WeekdayAdd the given number of days to this weekday, using wrapping arithmetic, and return the resulting weekday.
Adding a multiple of
7(including0) is guaranteed to produce the same weekday as this one.Note that this routine is also available via the
+operator.Example
use Weekday; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!;Wrapping arithmetic is also performed by the
+operator:use Weekday; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!; // The weekday can also be on the right hand side of addition: assert_eq!;fn wrapping_sub<D: Into<i64>>(self: Self, days: D) -> WeekdaySubtract the given number of days from this weekday, using wrapping arithmetic, and return the resulting weekday.
Subtracting a multiple of
7(including0) is guaranteed to produce the same weekday as this one.Note that this routine is also available via the
-operator.Example
use Weekday; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!;Wrapping arithmetic is also performed by the
-operator:use Weekday; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!;Unlike addition, since subtraction is not commutative and negating a weekday has no semantic meaning, the weekday cannot be on the right hand side of the
-operator.fn cycle_forward(self: Self) -> WeekdaysForwardStarting with this weekday, this returns an unending iterator that cycles forward through the days of the week.
Example
use Weekday; let mut it = Tuesday.cycle_forward; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!;fn cycle_reverse(self: Self) -> WeekdaysReverseStarting with this weekday, this returns an unending iterator that cycles backward through the days of the week.
Example
use Weekday; let mut it = Tuesday.cycle_reverse; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!;
impl Add for Weekday
fn add(self: Self, rhs: i32) -> Weekday
impl Add for Weekday
fn add(self: Self, rhs: i16) -> Weekday
impl Add for Weekday
fn add(self: Self, rhs: i8) -> Weekday
impl Add for Weekday
fn add(self: Self, rhs: i64) -> Weekday
impl AddAssign for Weekday
fn add_assign(self: &mut Self, rhs: i64)
impl AddAssign for Weekday
fn add_assign(self: &mut Self, rhs: i8)
impl AddAssign for Weekday
fn add_assign(self: &mut Self, rhs: i16)
impl AddAssign for Weekday
fn add_assign(self: &mut Self, rhs: i32)
impl Clone for Weekday
fn clone(self: &Self) -> Weekday
impl Copy for Weekday
impl Debug for Weekday
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl Eq for Weekday
impl Freeze for Weekday
impl Hash for Weekday
fn hash<__H: $crate::hash::Hasher>(self: &Self, state: &mut __H)
impl PartialEq for Weekday
fn eq(self: &Self, other: &Weekday) -> bool
impl RefUnwindSafe for Weekday
impl Send for Weekday
impl StructuralPartialEq for Weekday
impl Sub for Weekday
fn sub(self: Self, rhs: i64) -> Weekday
impl Sub for Weekday
fn sub(self: Self, rhs: i32) -> Weekday
impl Sub for Weekday
fn sub(self: Self, rhs: i16) -> Weekday
impl Sub for Weekday
fn sub(self: Self, rhs: i8) -> Weekday
impl SubAssign for Weekday
fn sub_assign(self: &mut Self, rhs: i64)
impl SubAssign for Weekday
fn sub_assign(self: &mut Self, rhs: i8)
impl SubAssign for Weekday
fn sub_assign(self: &mut Self, rhs: i16)
impl SubAssign for Weekday
fn sub_assign(self: &mut Self, rhs: i32)
impl Sync for Weekday
impl Unpin for Weekday
impl UnsafeUnpin for Weekday
impl UnwindSafe for Weekday
impl<T> Any for Weekday
fn type_id(self: &Self) -> TypeId
impl<T> Borrow for Weekday
fn borrow(self: &Self) -> &T
impl<T> BorrowMut for Weekday
fn borrow_mut(self: &mut Self) -> &mut T
impl<T> CloneToUninit for Weekday
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8)
impl<T> From for Weekday
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for Weekday
fn to_owned(self: &Self) -> Tfn clone_into(self: &Self, target: &mut T)
impl<T, U> Into for Weekday
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 Weekday
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto for Weekday
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>