use core::fmt; use core::num::NonZeroU8; use core::str::FromStr;
use powerfmt::smart_display::{FormatterOptions, Metadata, SmartDisplay};
useself::Month::*; usecrate::error;
/// Months of the year. #[repr(u8)] #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pubenum Month { #[allow(missing_docs)]
January = 1, #[allow(missing_docs)]
February = 2, #[allow(missing_docs)]
March = 3, #[allow(missing_docs)]
April = 4, #[allow(missing_docs)]
May = 5, #[allow(missing_docs)]
June = 6, #[allow(missing_docs)]
July = 7, #[allow(missing_docs)]
August = 8, #[allow(missing_docs)]
September = 9, #[allow(missing_docs)]
October = 10, #[allow(missing_docs)]
November = 11, #[allow(missing_docs)]
December = 12,
}
/// Get the previous month. /// /// ```rust /// # use time::Month; /// assert_eq!(Month::January.previous(), Month::December); /// ``` pubconstfn previous(self) -> Self { matchself {
January => December,
February => January,
March => February,
April => March,
May => April,
June => May,
July => June,
August => July,
September => August,
October => September,
November => October,
December => November,
}
}
/// Get the next month. /// /// ```rust /// # use time::Month; /// assert_eq!(Month::January.next(), Month::February); /// ``` pubconstfn next(self) -> Self { matchself {
January => February,
February => March,
March => April,
April => May,
May => June,
June => July,
July => August,
August => September,
September => October,
October => November,
November => December,
December => January,
}
}
/// Get n-th next month. /// /// ```rust /// # use time::Month; /// assert_eq!(Month::January.nth_next(4), Month::May); /// assert_eq!(Month::July.nth_next(9), Month::April); /// ``` pubconstfn nth_next(self, n: u8) -> Self { match (selfas u8 - 1 + n % 12) % 12 { 0 => January, 1 => February, 2 => March, 3 => April, 4 => May, 5 => June, 6 => July, 7 => August, 8 => September, 9 => October, 10 => November,
val => {
debug_assert!(val == 11);
December
}
}
}
mod private { #[non_exhaustive] #[derive(Debug, Clone, Copy)] pubstruct MonthMetadata;
} use private::MonthMetadata;
impl SmartDisplay for Month { type Metadata = MonthMetadata;
fn metadata(&self, _: FormatterOptions) -> Metadata<Self> { matchself {
January => Metadata::new(7, self, MonthMetadata),
February => Metadata::new(8, self, MonthMetadata),
March => Metadata::new(5, self, MonthMetadata),
April => Metadata::new(5, self, MonthMetadata),
May => Metadata::new(3, self, MonthMetadata),
June => Metadata::new(4, self, MonthMetadata),
July => Metadata::new(4, self, MonthMetadata),
August => Metadata::new(6, self, MonthMetadata),
September => Metadata::new(9, self, MonthMetadata),
October => Metadata::new(7, self, MonthMetadata),
November => Metadata::new(8, self, MonthMetadata),
December => Metadata::new(8, self, MonthMetadata),
}
}
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.pad(matchself {
January => "January",
February => "February",
March => "March",
April => "April",
May => "May",
June => "June",
July => "July",
August => "August",
September => "September",
October => "October",
November => "November",
December => "December",
})
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.