pub struct Date(/* private fields */);
Expand description
Release date including year, month, and day.
Implementations§
Source§impl Date
impl Date
Sourcepub fn read() -> Option<Date>
pub fn read() -> Option<Date>
Reads the release date of the running compiler. If it cannot be
determined (see the top-level documentation), returns None
.
§Example
use version_check::Date;
match Date::read() {
Some(d) => format!("The release date is: {}", d),
None => format!("Failed to read the release date.")
};
Sourcepub fn parse(date: &str) -> Option<Date>
pub fn parse(date: &str) -> Option<Date>
Parse a release date of the form %Y-%m-%d
. Returns None
if date
is
not in %Y-%m-%d
format.
§Example
use version_check::Date;
let date = Date::parse("2016-04-20").unwrap();
assert!(date.at_least("2016-01-10"));
assert!(date.at_most("2016-04-20"));
assert!(date.exactly("2016-04-20"));
assert!(Date::parse("2021-12-31").unwrap().exactly("2021-12-31"));
assert!(Date::parse("March 13, 2018").is_none());
assert!(Date::parse("1-2-3-4-5").is_none());
assert!(Date::parse("2020-300-23120").is_none());
assert!(Date::parse("2020-12-12 1").is_none());
assert!(Date::parse("2020-10").is_none());
assert!(Date::parse("2020").is_none());
Sourcepub fn from_ymd(year: u16, month: u8, day: u8) -> Date
pub fn from_ymd(year: u16, month: u8, day: u8) -> Date
Creates a Date
from (year, month, day)
date components.
Does not check the validity of year
, month
, or day
, but year
is
truncated to 23 bits (% 8,388,608), month
to 4 bits (% 16), and day
to 5 bits (% 32).
§Example
use version_check::Date;
assert!(Date::from_ymd(2021, 7, 30).exactly("2021-07-30"));
assert!(Date::from_ymd(2010, 3, 23).exactly("2010-03-23"));
assert!(Date::from_ymd(2090, 1, 31).exactly("2090-01-31"));
// Truncation: 33 % 32 == 0x21 & 0x1F == 1.
assert!(Date::from_ymd(2090, 1, 33).exactly("2090-01-01"));
Sourcepub fn at_least(&self, date: &str) -> bool
pub fn at_least(&self, date: &str) -> bool
Returns true
if self
occurs on or after date
.
If date
occurs before self
, or if date
is not in %Y-%m-%d
format, returns false
.
§Example
use version_check::Date;
let date = Date::parse("2020-01-01").unwrap();
assert!(date.at_least("2019-12-31"));
assert!(date.at_least("2020-01-01"));
assert!(date.at_least("2014-04-31"));
assert!(!date.at_least("2020-01-02"));
assert!(!date.at_least("2024-08-18"));
Sourcepub fn at_most(&self, date: &str) -> bool
pub fn at_most(&self, date: &str) -> bool
Returns true
if self
occurs on or before date
.
If date
occurs after self
, or if date
is not in %Y-%m-%d
format, returns false
.
§Example
use version_check::Date;
let date = Date::parse("2020-01-01").unwrap();
assert!(date.at_most("2020-01-01"));
assert!(date.at_most("2020-01-02"));
assert!(date.at_most("2024-08-18"));
assert!(!date.at_most("2019-12-31"));
assert!(!date.at_most("2014-04-31"));
Sourcepub fn exactly(&self, date: &str) -> bool
pub fn exactly(&self, date: &str) -> bool
Returns true
if self
occurs exactly on date
.
If date
is not exactly self
, or if date
is not in %Y-%m-%d
format, returns false
.
§Example
use version_check::Date;
let date = Date::parse("2020-01-01").unwrap();
assert!(date.exactly("2020-01-01"));
assert!(!date.exactly("2019-12-31"));
assert!(!date.exactly("2014-04-31"));
assert!(!date.exactly("2020-01-02"));
assert!(!date.exactly("2024-08-18"));