Struct compact_calendar::CompactMonth
source · pub struct CompactMonth(/* private fields */);
Expand description
A compact representation of included days for a month, using a u32-based bit array.
Implementations§
source§impl CompactMonth
impl CompactMonth
sourcepub const fn new() -> Self
pub const fn new() -> Self
Create a new month that does not include any day.
use compact_calendar::CompactMonth;
let month = CompactMonth::new();
assert_eq!(month.count(), 0);
sourcepub fn insert(&mut self, day: u32)
pub fn insert(&mut self, day: u32)
Include a day in this month.
use compact_calendar::CompactMonth;
let mut month = CompactMonth::new();
month.insert(2);
month.insert(2);
month.insert(19);
assert_eq!(month.count(), 2);
sourcepub fn contains(self, day: u32) -> bool
pub fn contains(self, day: u32) -> bool
Check if this month includes the given day.
use compact_calendar::CompactMonth;
let mut month = CompactMonth::new();
month.insert(1);
month.insert(18);
assert!(month.contains(1));
assert!(month.contains(18));
assert!(!month.contains(5));
sourcepub fn iter(self) -> impl Iterator<Item = u32>
pub fn iter(self) -> impl Iterator<Item = u32>
Iterate over the days included in this month.
use compact_calendar::CompactMonth;
let mut month = CompactMonth::new();
month.insert(18);
month.insert(1);
let days: Vec<u32> = month.iter().collect();
assert_eq!(days, [1, 18])
sourcepub fn first(self) -> Option<u32>
pub fn first(self) -> Option<u32>
Get the first day included in this month if it is not empty.
use compact_calendar::CompactMonth;
let mut month = CompactMonth::new();
assert_eq!(month.first(), None);
month.insert(31);
assert_eq!(month.first(), Some(31));
month.insert(8);
assert_eq!(month.first(), Some(8));
sourcepub fn first_after(self, day: u32) -> Option<u32>
pub fn first_after(self, day: u32) -> Option<u32>
Get the first day included in this month that follows the input day, if such a day exists.
use compact_calendar::CompactMonth;
let mut month = CompactMonth::new();
month.insert(4);
month.insert(17);
assert_eq!(month.first_after(2), Some(4));
assert_eq!(month.first_after(4), Some(17));
assert_eq!(month.first_after(17), None);
sourcepub fn count(self) -> u32
pub fn count(self) -> u32
Count number of days included for this month.
use compact_calendar::CompactMonth;
let mut month = CompactMonth::new();
month.insert(26);
month.insert(3);
assert_eq!(month.count(), 2);
sourcepub fn serialize(self, writer: impl Write) -> Result<()>
pub fn serialize(self, writer: impl Write) -> Result<()>
Serialize this month into a writer.
use compact_calendar::CompactMonth;
let mut month = CompactMonth::new();
let mut buf1 = Vec::new();
month.insert(31);
month.serialize(&mut buf1).unwrap();
let mut buf2 = Vec::new();
month.insert(1);
month.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 month from a reader.
use compact_calendar::CompactMonth;
let mut month1 = CompactMonth::new();
month1.insert(30);
month1.insert(2);
let mut buf = Vec::new();
month1.serialize(&mut buf).unwrap();
let month2 = CompactMonth::deserialize(buf.as_slice()).unwrap();
assert_eq!(month1, month2);
Trait Implementations§
source§impl Clone for CompactMonth
impl Clone for CompactMonth
source§fn clone(&self) -> CompactMonth
fn clone(&self) -> CompactMonth
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 CompactMonth
impl Debug for CompactMonth
source§impl Hash for CompactMonth
impl Hash for CompactMonth
source§impl Ord for CompactMonth
impl Ord for CompactMonth
source§fn cmp(&self, other: &CompactMonth) -> Ordering
fn cmp(&self, other: &CompactMonth) -> 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 CompactMonth
impl PartialEq for CompactMonth
source§fn eq(&self, other: &CompactMonth) -> bool
fn eq(&self, other: &CompactMonth) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd for CompactMonth
impl PartialOrd for CompactMonth
source§fn partial_cmp(&self, other: &CompactMonth) -> Option<Ordering>
fn partial_cmp(&self, other: &CompactMonth) -> 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 CompactMonth
impl Eq for CompactMonth
impl StructuralEq for CompactMonth
impl StructuralPartialEq for CompactMonth
Auto Trait Implementations§
impl RefUnwindSafe for CompactMonth
impl Send for CompactMonth
impl Sync for CompactMonth
impl Unpin for CompactMonth
impl UnwindSafe for CompactMonth
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