Skip to content

Commit 92dc230

Browse files
committed
Use NonZeroI32 to store a NaiveDate
1 parent 67dbf23 commit 92dc230

File tree

3 files changed

+12
-11
lines changed

3 files changed

+12
-11
lines changed

src/lib.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -568,20 +568,20 @@ mod tests {
568568
fn test_type_sizes() {
569569
use core::mem::size_of;
570570
assert_eq!(size_of::<NaiveDate>(), 4);
571-
assert_eq!(size_of::<Option<NaiveDate>>(), 8);
571+
assert_eq!(size_of::<Option<NaiveDate>>(), 4);
572572
assert_eq!(size_of::<NaiveTime>(), 8);
573573
assert_eq!(size_of::<Option<NaiveTime>>(), 12);
574574
assert_eq!(size_of::<NaiveDateTime>(), 12);
575-
assert_eq!(size_of::<Option<NaiveDateTime>>(), 16);
575+
assert_eq!(size_of::<Option<NaiveDateTime>>(), 12);
576576

577577
assert_eq!(size_of::<DateTime<Utc>>(), 12);
578578
assert_eq!(size_of::<DateTime<FixedOffset>>(), 16);
579579
assert_eq!(size_of::<DateTime<Local>>(), 16);
580-
assert_eq!(size_of::<Option<DateTime<FixedOffset>>>(), 20);
580+
assert_eq!(size_of::<Option<DateTime<FixedOffset>>>(), 16);
581581

582582
assert_eq!(size_of::<Date<Utc>>(), 4);
583-
assert_eq!(size_of::<Option<Date<Utc>>>(), 8);
583+
assert_eq!(size_of::<Option<Date<Utc>>>(), 4);
584584
assert_eq!(size_of::<Date<FixedOffset>>(), 8);
585-
assert_eq!(size_of::<Option<Date<FixedOffset>>>(), 12);
585+
assert_eq!(size_of::<Option<Date<FixedOffset>>>(), 8);
586586
}
587587
}

src/naive/internals.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,24 @@
1515
1616
#![cfg_attr(feature = "__internal_bench", allow(missing_docs))]
1717

18-
use crate::Weekday;
18+
use crate::{expect, Weekday};
1919
use core::fmt;
20+
use core::num::NonZeroI32;
2021

2122
/// The internal date representation: `year << 13 | Of`
2223
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, PartialOrd, Ord)]
23-
pub(super) struct DateImpl(i32);
24+
pub(super) struct DateImpl(NonZeroI32);
2425

2526
pub(super) const MAX_YEAR: DateImpl = DateImpl::new(i32::MAX >> 13);
2627
pub(super) const MIN_YEAR: DateImpl = DateImpl::new(i32::MIN >> 13);
2728

2829
impl DateImpl {
2930
pub(super) const fn new(val: i32) -> Self {
30-
DateImpl(val)
31+
DateImpl(expect!(NonZeroI32::new(val), "invalid internal value"))
3132
}
3233

3334
pub(super) const fn get(&self) -> i32 {
34-
self.0
35+
self.0.get()
3536
}
3637
}
3738

src/naive/isoweek.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,13 +155,13 @@ mod tests {
155155
let minweek = NaiveDate::MIN.iso_week();
156156
let maxweek = NaiveDate::MAX.iso_week();
157157

158-
assert_eq!(minweek.year(), internals::MIN_YEAR);
158+
assert_eq!(minweek.year(), internals::MIN_YEAR.get());
159159
assert_eq!(minweek.week(), 1);
160160
assert_eq!(minweek.week0(), 0);
161161
#[cfg(any(feature = "alloc", feature = "std"))]
162162
assert_eq!(format!("{:?}", minweek), NaiveDate::MIN.format("%G-W%V").to_string());
163163

164-
assert_eq!(maxweek.year(), internals::MAX_YEAR + 1);
164+
assert_eq!(maxweek.year(), internals::MAX_YEAR.get() + 1);
165165
assert_eq!(maxweek.week(), 1);
166166
assert_eq!(maxweek.week0(), 0);
167167
#[cfg(any(feature = "alloc", feature = "std"))]

0 commit comments

Comments
 (0)