Skip to main content

CalendarSystem

Trait CalendarSystem 

Source
pub trait CalendarSystem {
    type Date: Clone + Debug;

    // Required methods
    fn to_gregorian(&self, date: &Self::Date) -> Option<NaiveDate>;
    fn from_gregorian(&self, date: &NaiveDate) -> Option<Self::Date>;
    fn name(&self) -> &str;

    // Provided method
    fn calendar_type(&self) -> CalendarType { ... }
}
Expand description

A calendar system for date representation.

Different from TemporalOntology in that calendars are specifically about date representation, while ontologies are about temporal concepts.

§Built-in Implementations

§Example: Islamic Calendar

struct HijriCalendar;

impl CalendarSystem for HijriCalendar {
    type Date = HijriDate;

    fn to_gregorian(&self, date: &Self::Date) -> Option<NaiveDate> {
        // Islamic calendar is purely lunar (354 or 355 days/year)
        // Conversion requires astronomical calculation or lookup tables
        todo!()
    }

    fn from_gregorian(&self, date: &NaiveDate) -> Option<Self::Date> {
        todo!()
    }
}

Required Associated Types§

Source

type Date: Clone + Debug

The date type for this calendar.

Required Methods§

Source

fn to_gregorian(&self, date: &Self::Date) -> Option<NaiveDate>

Convert to Gregorian date.

Source

fn from_gregorian(&self, date: &NaiveDate) -> Option<Self::Date>

Convert from Gregorian date.

Source

fn name(&self) -> &str

Get the calendar name.

Provided Methods§

Source

fn calendar_type(&self) -> CalendarType

Is this calendar lunar, solar, or lunisolar?

Implementors§