FlexibleDate

Enum FlexibleDate 

Source
pub enum FlexibleDate {
    Today,
    Tomorrow,
    Weekday(Weekday),
}
Expand description

Represents a relative (or, eventually, absolute) date.

§Examples

Here are of input strings that will eventually be supported. See the Todoist docs.

  • “today”, “tod”
  • “tomorrow”, “tom”, “tmrw”
  • “wednesday”, “wed” (any weekday)
  • “next week”
  • “this weekend”
  • “next weekend”
  • “in 3 days”, “in three days”
  • “in 2 weeks”, “in two weeks”
  • “2 weeks from now”
  • “in four months”
  • “in one year”
  • “next month”
  • “january 27”, “jan 27”, “01/27”
  • “jan 27 2024”, “01/27/2024”
  • “27th”
  • “mid january”
  • “mid jan”
  • “later this week”
  • “two weeks from tomorrow”

Variants§

§

Today

§

Tomorrow

§

Weekday(Weekday)

Implementations§

Source§

impl FlexibleDate

Source

pub fn parse_from_str(text: &str) -> Option<FlexibleDate>

Parses a FlexibleDate from within a string. Fails (returns None) if the full string does not match a date.

let result1 = FlexibleDate::parse_from_str("today").unwrap();
assert_eq!(result1, FlexibleDate::Today);

let result2 = FlexibleDate::parse_from_str("tom").unwrap();
assert_eq!(result2, FlexibleDate::Tomorrow);

let result3 = FlexibleDate::parse_from_str("go to the store today");
assert_eq!(result3, None);
Source

pub fn find_and_parse_in_str(text: &str) -> Option<Parsed<FlexibleDate>>

Finds and parses a FlexibleDate from within a string. The returned Parsed<> type contains the date that was parsed as well as the location of the matching substring in the input.

let result1 = FlexibleDate::find_and_parse_in_str("go to the store today").unwrap();
assert_eq!(result1.data, FlexibleDate::Today);
assert_eq!(result1.range, (16..21));

let result2 = FlexibleDate::find_and_parse_in_str("do a barrel tom okay?").unwrap();
assert_eq!(result2.data, FlexibleDate::Tomorrow);
assert_eq!(result2.range, (12..15));
Source

pub fn into_naive_date(self, today: NaiveDate) -> NaiveDate

Converts the FlexibleDate into a NaiveDate.

let today = chrono::NaiveDate::parse_from_str("2023-10-08", "%Y-%m-%d").unwrap();

let date = FlexibleDate::Today.into_naive_date(today);
assert_eq!(date.month(), 10);
assert_eq!(date.day(), 8);
assert_eq!(date.year(), 2023);

let date = FlexibleDate::Tomorrow.into_naive_date(today);
assert_eq!(date.month(), 10);
assert_eq!(date.day(), 9);
assert_eq!(date.year(), 2023);

let date = FlexibleDate::Weekday(Weekday::Wednesday).into_naive_date(today);
// 10/08/23 was a Sunday, 10/11 was the following Wednesday
assert_eq!(date.month(), 10);
assert_eq!(date.day(), 11);
assert_eq!(date.year(), 2023);

Trait Implementations§

Source§

impl Clone for FlexibleDate

Source§

fn clone(&self) -> FlexibleDate

Returns a duplicate 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 FlexibleDate

Source§

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

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

impl PartialEq for FlexibleDate

Source§

fn eq(&self, other: &FlexibleDate) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for FlexibleDate

Source§

impl StructuralPartialEq for FlexibleDate

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

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 T
where T: Clone,

Source§

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 T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

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

Source§

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

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.