#[non_exhaustive]
pub struct WeekCalculator { pub first_weekday: IsoWeekday, pub min_week_days: u8, }
Expand description

Calculator for week-of-month and week-of-year based on locale-specific configurations.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§first_weekday: IsoWeekday

The first day of a week.

§min_week_days: u8

For a given week, the minimum number of that week’s days present in a given month or year for the week to be considered part of that month or year.

Implementations§

source§

impl WeekCalculator

source

pub fn try_new_unstable<P>( provider: &P, locale: &DataLocale ) -> Result<Self, CalendarError>where P: DataProvider<WeekDataV1Marker>,

Creates a new WeekCalculator from locale data.

📚 Help choosing a constructor

⚠️ The bounds on this function may change over time, including in SemVer minor releases.
source

pub fn try_new_with_any_provider( provider: &impl AnyProvider + ?Sized, locale: &DataLocale ) -> Result<Self, CalendarError>

Creates a new instance using an AnyProvider.

For details on the behavior of this function, see: Self::try_new_unstable

📚 Help choosing a constructor

source

pub fn try_new_with_buffer_provider( provider: &impl BufferProvider + ?Sized, locale: &DataLocale ) -> Result<Self, CalendarError>

Enabled with the "serde" feature.

Creates a new instance using a BufferProvider.

For details on the behavior of this function, see: Self::try_new_unstable

📚 Help choosing a constructor

source

pub fn week_of_month( &self, day_of_month: DayOfMonth, iso_weekday: IsoWeekday ) -> WeekOfMonth

Returns the week of month according to a calendar with min_week_days = 1.

This is different from what the UTS35 spec describes 1 but the latter is missing a month of week-of-month field so following the spec would result in inconsistencies (e.g. in the ISO calendar 2021-01-01 is the last week of December but ‘MMMMW’ would have it formatted as ‘week 5 of January’).

Examples
use icu_calendar::types::{DayOfMonth, IsoWeekday, WeekOfMonth};
use icu_calendar::week::WeekCalculator;

let week_calculator = WeekCalculator::try_new_unstable(
    &icu_testdata::unstable(),
    &icu_locid::locale!("en-GB").into(),
)
.expect("Data exists");

// Wednesday the 10th is in week 2:
assert_eq!(
    WeekOfMonth(2),
    week_calculator.week_of_month(DayOfMonth(10), IsoWeekday::Wednesday)
);
source

pub fn week_of_year( &self, day_of_year_info: DayOfYearInfo, iso_weekday: IsoWeekday ) -> Result<WeekOf, CalendarError>

Returns the week of year according to the weekday and DayOfYearInfo.

Examples
use icu_calendar::types::{DayOfMonth, IsoWeekday};
use icu_calendar::week::{RelativeUnit, WeekCalculator, WeekOf};
use icu_calendar::Date;

let week_calculator = WeekCalculator::try_new_unstable(
    &icu_testdata::unstable(),
    &icu_locid::locale!("en-GB").into(),
)
.expect("Data exists");

let iso_date = Date::try_new_iso_date(2022, 8, 26).unwrap();

// Friday August 26 is in week 34 of year 2022:
assert_eq!(
    WeekOf {
        unit: RelativeUnit::Current,
        week: 34
    },
    week_calculator
        .week_of_year(iso_date.day_of_year_info(), IsoWeekday::Friday)
        .unwrap()
);

Trait Implementations§

source§

impl Clone for WeekCalculator

source§

fn clone(&self) -> WeekCalculator

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for WeekCalculator

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for WeekCalculator

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl From<&WeekDataV1> for WeekCalculator

source§

fn from(other: &WeekDataV1) -> Self

Converts to this type from the input type.
source§

impl From<WeekDataV1> for WeekCalculator

source§

fn from(other: WeekDataV1) -> Self

Converts to this type from the input type.
source§

impl Copy for WeekCalculator

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> ErasedDestructor for Twhere T: 'static,

source§

impl<T> MaybeSendSync for T