Struct compact_calendar::CompactYear
source · pub struct CompactYear(/* private fields */);
Expand description
A compact representation of included days for a year, using a collection of u32-based bit array.
Implementations§
source§impl CompactYear
impl CompactYear
sourcepub const fn new() -> Self
pub const fn new() -> Self
Create a new year that does not include any day.
use compact_calendar::CompactYear;
let year = CompactYear::new();
assert_eq!(year.count(), 0);
sourcepub fn insert(&mut self, month: u32, day: u32)
pub fn insert(&mut self, month: u32, day: u32)
Include a day in this year.
use compact_calendar::CompactYear;
let mut year = CompactYear::new();
year.insert(11, 3);
year.insert(11, 3);
year.insert(1, 25);
assert_eq!(year.count(), 2);
sourcepub fn contains(&self, month: u32, day: u32) -> bool
pub fn contains(&self, month: u32, day: u32) -> bool
Check if this year includes the given day.
use compact_calendar::CompactYear;
let mut year = CompactYear::new();
year.insert(3, 1);
year.insert(9, 5);
assert!(year.contains(3, 1));
assert!(year.contains(9, 5));
assert!(!year.contains(7, 14));
sourcepub fn iter(&self) -> impl Iterator<Item = (u32, u32)> + '_
pub fn iter(&self) -> impl Iterator<Item = (u32, u32)> + '_
Iterate over the days included in this year.
use compact_calendar::CompactYear;
let mut year = CompactYear::new();
year.insert(9, 5);
year.insert(3, 1);
let days: Vec<_> = year.iter().collect();
assert_eq!(days, [(3, 1), (9, 5)])
sourcepub fn first(&self) -> Option<(u32, u32)>
pub fn first(&self) -> Option<(u32, u32)>
Get the first day included in this year if it is not empty.
use compact_calendar::CompactYear;
let mut year = CompactYear::new();
assert_eq!(year.first(), None);
year.insert(12, 31);
assert_eq!(year.first(), Some((12, 31)));
year.insert(5, 8);
assert_eq!(year.first(), Some((5, 8)));
sourcepub fn first_after(&self, month: u32, day: u32) -> Option<(u32, u32)>
pub fn first_after(&self, month: u32, day: u32) -> Option<(u32, u32)>
Get the first day included in this year that follows the input day, if such a day exists.
use compact_calendar::CompactYear;
let mut year = CompactYear::new();
year.insert(3, 15);
year.insert(10, 9);
year.insert(2, 7);
assert_eq!(year.first_after(2, 2), Some((2, 7)));
assert_eq!(year.first_after(2, 7), Some((3, 15)));
assert_eq!(year.first_after(11, 1), None);
sourcepub fn count(&self) -> u32
pub fn count(&self) -> u32
Count number of days included for this year.
use compact_calendar::CompactYear;
let mut year = CompactYear::new();
year.insert(11, 3);
year.insert(4, 28);
assert_eq!(year.count(), 2);
sourcepub fn serialize(&self, writer: impl Write) -> Result<()>
pub fn serialize(&self, writer: impl Write) -> Result<()>
Serialize this year into a writer.
use compact_calendar::CompactYear;
let mut year = CompactYear::new();
let mut buf1 = Vec::new();
year.insert(11, 3);
year.serialize(&mut buf1).unwrap();
let mut buf2 = Vec::new();
year.insert(4, 28);
year.serialize(&mut buf2).unwrap();
assert_ne!(buf1, buf2);
sourcepub fn deserialize(reader: impl Read) -> Result<Self>
pub fn deserialize(reader: impl Read) -> Result<Self>
Deserialize a year from a reader.
use compact_calendar::CompactYear;
let mut year1 = CompactYear::new();
year1.insert(11, 3);
year1.insert(4, 28);
let mut buf = Vec::new();
year1.serialize(&mut buf).unwrap();
let year2 = CompactYear::deserialize(buf.as_slice()).unwrap();
assert_eq!(year1, year2);
Trait Implementations§
source§impl Clone for CompactYear
impl Clone for CompactYear
source§fn clone(&self) -> CompactYear
fn clone(&self) -> CompactYear
Returns a copy 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 CompactYear
impl Debug for CompactYear
source§impl Hash for CompactYear
impl Hash for CompactYear
source§impl Ord for CompactYear
impl Ord for CompactYear
source§fn cmp(&self, other: &CompactYear) -> Ordering
fn cmp(&self, other: &CompactYear) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere Self: Sized,
Compares and returns the maximum of two values. Read more
source§impl PartialEq for CompactYear
impl PartialEq for CompactYear
source§fn eq(&self, other: &CompactYear) -> bool
fn eq(&self, other: &CompactYear) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd for CompactYear
impl PartialOrd for CompactYear
source§fn partial_cmp(&self, other: &CompactYear) -> Option<Ordering>
fn partial_cmp(&self, other: &CompactYear) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moreimpl Copy for CompactYear
impl Eq for CompactYear
impl StructuralEq for CompactYear
impl StructuralPartialEq for CompactYear
Auto Trait Implementations§
impl RefUnwindSafe for CompactYear
impl Send for CompactYear
impl Sync for CompactYear
impl Unpin for CompactYear
impl UnwindSafe for CompactYear
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