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§
Implementations§
Source§impl FlexibleDate
impl FlexibleDate
Sourcepub fn parse_from_str(text: &str) -> Option<FlexibleDate>
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);Sourcepub fn find_and_parse_in_str(text: &str) -> Option<Parsed<FlexibleDate>>
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));Sourcepub fn into_naive_date(self, today: NaiveDate) -> NaiveDate
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
impl Clone for FlexibleDate
Source§fn clone(&self) -> FlexibleDate
fn clone(&self) -> FlexibleDate
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for FlexibleDate
impl Debug for FlexibleDate
Source§impl PartialEq for FlexibleDate
impl PartialEq for FlexibleDate
impl Eq for FlexibleDate
impl StructuralPartialEq for FlexibleDate
Auto Trait Implementations§
impl Freeze for FlexibleDate
impl RefUnwindSafe for FlexibleDate
impl Send for FlexibleDate
impl Sync for FlexibleDate
impl Unpin for FlexibleDate
impl UnwindSafe for FlexibleDate
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more