diff --git a/Cargo.toml b/Cargo.toml index 9dab1297e3..087a0be3ec 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,15 +26,13 @@ std = ["alloc"] clock = ["std", "winapi", "iana-time-zone", "android-tzdata"] wasmbind = ["wasm-bindgen", "js-sys"] unstable-locales = ["pure-rust-locales"] -rkyv = ["rkyv-32"] # Note that rkyv-16, rkyv-32, and rkyv-64 are mutually exclusive. -rkyv-16 = ["dep:rkyv", "rkyv?/size_16"] -rkyv-32 = ["dep:rkyv", "rkyv?/size_32"] -rkyv-64 = ["dep:rkyv", "rkyv?/size_64"] +rkyv-16 = ["rkyv", "rkyv?/size_16"] +rkyv-32 = ["rkyv", "rkyv?/size_32"] +rkyv-64 = ["rkyv", "rkyv?/size_64"] rkyv-validation = ["rkyv?/validation"] # Features for internal use only: __internal_bench = [] -__internal_rkyv = ["dep:rkyv"] [dependencies] serde = { version = "1.0.99", default-features = false, optional = true } diff --git a/src/datetime/mod.rs b/src/datetime/mod.rs index 1b287bd296..6efd15ef8c 100644 --- a/src/datetime/mod.rs +++ b/src/datetime/mod.rs @@ -28,7 +28,7 @@ use crate::offset::Local; use crate::offset::{FixedOffset, Offset, TimeZone, Utc}; use crate::{Datelike, Months, TimeDelta, Timelike, Weekday}; -#[cfg(feature = "__internal_rkyv")] +#[cfg(feature = "rkyv")] use rkyv::{Archive, Deserialize, Serialize}; /// documented at re-export site @@ -73,10 +73,7 @@ pub enum SecondsFormat { /// the general-purpose constructors are all via the methods on the /// [`TimeZone`](./offset/trait.TimeZone.html) implementations. #[derive(Clone)] -#[cfg_attr( - feature = "__internal_rkyv", - derive(Archive, Deserialize, Serialize) -)] +#[cfg_attr(feature = "rkyv", derive(Archive, Deserialize, Serialize))] pub struct DateTime { datetime: NaiveDateTime, offset: Tz::Offset, diff --git a/src/lib.rs b/src/lib.rs index dd319b4ff9..0d092fcec1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -544,7 +544,7 @@ pub mod serde { /// Zero-copy serialization/deserialization with rkyv. /// /// This module re-exports the `Archived*` versions of chrono's types. -#[cfg(feature = "__internal_rkyv")] +#[cfg(feature = "rkyv")] pub mod rkyv { pub use crate::datetime::ArchivedDateTime; pub use crate::month::ArchivedMonth; diff --git a/src/month.rs b/src/month.rs index f1111d20f8..5945bab268 100644 --- a/src/month.rs +++ b/src/month.rs @@ -1,6 +1,6 @@ use core::fmt; -#[cfg(feature = "__internal_rkyv")] +#[cfg(feature = "rkyv")] use rkyv::{Archive, Deserialize, Serialize}; use crate::OutOfRange; @@ -29,18 +29,12 @@ use crate::OutOfRange; /// Can be Serialized/Deserialized with serde // Actual implementation is zero-indexed, API intended as 1-indexed for more intuitive behavior. #[derive(PartialEq, Eq, Copy, Clone, Debug, Hash, PartialOrd, Ord)] +#[cfg_attr(feature = "rkyv", derive(Archive, Deserialize, Serialize))] #[cfg_attr( - feature = "__internal_rkyv", - derive(Archive, Deserialize, Serialize) -)] -#[cfg_attr( - feature = "__internal_rkyv", + feature = "rkyv", archive_attr(derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug, Hash)) )] -#[cfg_attr( - feature = "__internal_rkyv", - archive(compare(PartialEq, PartialOrd)) -)] +#[cfg_attr(feature = "rkyv", archive(compare(PartialEq, PartialOrd)))] #[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))] pub enum Month { /// January diff --git a/src/naive/date.rs b/src/naive/date.rs index 2b7d2ae8f7..6b8809d104 100644 --- a/src/naive/date.rs +++ b/src/naive/date.rs @@ -9,7 +9,7 @@ use core::iter::FusedIterator; use core::ops::{Add, AddAssign, RangeInclusive, Sub, SubAssign}; use core::{fmt, str}; -#[cfg(feature = "__internal_rkyv")] +#[cfg(feature = "rkyv")] use rkyv::{Archive, Deserialize, Serialize}; /// L10n locales. @@ -190,18 +190,12 @@ impl Days { /// /// [proleptic Gregorian date]: crate::NaiveDate#calendar-date #[derive(PartialEq, Eq, Hash, PartialOrd, Ord, Copy, Clone)] +#[cfg_attr(feature = "rkyv", derive(Archive, Deserialize, Serialize))] #[cfg_attr( - feature = "__internal_rkyv", - derive(Archive, Deserialize, Serialize) -)] -#[cfg_attr( - feature = "__internal_rkyv", + feature = "rkyv", archive_attr(derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug, Hash)) )] -#[cfg_attr( - feature = "__internal_rkyv", - archive(compare(PartialEq, PartialOrd)) -)] +#[cfg_attr(feature = "rkyv", archive(compare(PartialEq, PartialOrd)))] pub struct NaiveDate { ymdf: DateImpl, // (year << 13) | of } diff --git a/src/naive/datetime/mod.rs b/src/naive/datetime/mod.rs index a1ac01620d..f017c0f590 100644 --- a/src/naive/datetime/mod.rs +++ b/src/naive/datetime/mod.rs @@ -10,7 +10,7 @@ use core::ops::{Add, AddAssign, Sub, SubAssign}; use core::time::Duration; use core::{fmt, str}; -#[cfg(feature = "__internal_rkyv")] +#[cfg(feature = "rkyv")] use rkyv::{Archive, Deserialize, Serialize}; #[cfg(feature = "alloc")] @@ -72,18 +72,12 @@ pub const MAX_DATETIME: NaiveDateTime = NaiveDateTime::MAX; /// assert_eq!(dt.num_seconds_from_midnight(), 33011); /// ``` #[derive(PartialEq, Eq, Hash, PartialOrd, Ord, Copy, Clone)] +#[cfg_attr(feature = "rkyv", derive(Archive, Deserialize, Serialize))] #[cfg_attr( - feature = "__internal_rkyv", - derive(Archive, Deserialize, Serialize) -)] -#[cfg_attr( - feature = "__internal_rkyv", + feature = "rkyv", archive_attr(derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug, Hash)) )] -#[cfg_attr( - feature = "__internal_rkyv", - archive(compare(PartialEq, PartialOrd)) -)] +#[cfg_attr(feature = "rkyv", archive(compare(PartialEq, PartialOrd)))] #[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))] pub struct NaiveDateTime { date: NaiveDate, diff --git a/src/naive/isoweek.rs b/src/naive/isoweek.rs index cad24e5053..36bf85fc2e 100644 --- a/src/naive/isoweek.rs +++ b/src/naive/isoweek.rs @@ -7,7 +7,7 @@ use core::fmt; use super::internals::{DateImpl, Of, YearFlags}; -#[cfg(feature = "__internal_rkyv")] +#[cfg(feature = "rkyv")] use rkyv::{Archive, Deserialize, Serialize}; /// ISO 8601 week. @@ -17,18 +17,12 @@ use rkyv::{Archive, Deserialize, Serialize}; /// One can retrieve this type from the existing [`Datelike`](../trait.Datelike.html) types /// via the [`Datelike::iso_week`](../trait.Datelike.html#tymethod.iso_week) method. #[derive(PartialEq, Eq, PartialOrd, Ord, Copy, Clone, Hash)] +#[cfg_attr(feature = "rkyv", derive(Archive, Deserialize, Serialize))] #[cfg_attr( - feature = "__internal_rkyv", - derive(Archive, Deserialize, Serialize) -)] -#[cfg_attr( - feature = "__internal_rkyv", + feature = "rkyv", archive_attr(derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug, Hash)) )] -#[cfg_attr( - feature = "__internal_rkyv", - archive(compare(PartialEq, PartialOrd)) -)] +#[cfg_attr(feature = "rkyv", archive(compare(PartialEq, PartialOrd)))] pub struct IsoWeek { // note that this allows for larger year range than `NaiveDate`. // this is crucial because we have an edge case for the first and last week supported, diff --git a/src/naive/time/mod.rs b/src/naive/time/mod.rs index b55a515683..48506e307e 100644 --- a/src/naive/time/mod.rs +++ b/src/naive/time/mod.rs @@ -9,7 +9,7 @@ use core::ops::{Add, AddAssign, Sub, SubAssign}; use core::time::Duration; use core::{fmt, str}; -#[cfg(feature = "__internal_rkyv")] +#[cfg(feature = "rkyv")] use rkyv::{Archive, Deserialize, Serialize}; #[cfg(feature = "alloc")] @@ -199,18 +199,12 @@ mod tests; /// Since Chrono alone cannot determine any existence of leap seconds, /// **there is absolutely no guarantee that the leap second read has actually happened**. #[derive(PartialEq, Eq, Hash, PartialOrd, Ord, Copy, Clone)] +#[cfg_attr(feature = "rkyv", derive(Archive, Deserialize, Serialize))] #[cfg_attr( - feature = "__internal_rkyv", - derive(Archive, Deserialize, Serialize) -)] -#[cfg_attr( - feature = "__internal_rkyv", + feature = "rkyv", archive_attr(derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug, Hash)) )] -#[cfg_attr( - feature = "__internal_rkyv", - archive(compare(PartialEq, PartialOrd)) -)] +#[cfg_attr(feature = "rkyv", archive(compare(PartialEq, PartialOrd)))] pub struct NaiveTime { secs: u32, frac: u32, diff --git a/src/offset/fixed.rs b/src/offset/fixed.rs index 46bd5bd54b..4550da3364 100644 --- a/src/offset/fixed.rs +++ b/src/offset/fixed.rs @@ -6,7 +6,7 @@ use core::fmt; use core::str::FromStr; -#[cfg(feature = "__internal_rkyv")] +#[cfg(feature = "rkyv")] use rkyv::{Archive, Deserialize, Serialize}; use super::{LocalResult, Offset, TimeZone}; @@ -20,18 +20,12 @@ use crate::{NaiveDateTime, ParseError}; /// `DateTime` instances. See the [`east_opt`](#method.east_opt) and /// [`west_opt`](#method.west_opt) methods for examples. #[derive(PartialEq, Eq, Hash, Copy, Clone)] +#[cfg_attr(feature = "rkyv", derive(Archive, Deserialize, Serialize))] #[cfg_attr( - feature = "__internal_rkyv", - derive(Archive, Deserialize, Serialize) -)] -#[cfg_attr( - feature = "__internal_rkyv", + feature = "rkyv", archive_attr(derive(Clone, Copy, PartialEq, Eq, Hash, Debug)) )] -#[cfg_attr( - feature = "__internal_rkyv", - archive(compare(PartialEq)) -)] +#[cfg_attr(feature = "rkyv", archive(compare(PartialEq)))] pub struct FixedOffset { local_minus_utc: i32, } diff --git a/src/offset/local/mod.rs b/src/offset/local/mod.rs index c0184b0220..bc48b322e2 100644 --- a/src/offset/local/mod.rs +++ b/src/offset/local/mod.rs @@ -3,7 +3,7 @@ //! The local (system) time zone. -#[cfg(feature = "__internal_rkyv")] +#[cfg(feature = "rkyv")] use rkyv::{Archive, Deserialize, Serialize}; use super::fixed::FixedOffset; @@ -101,14 +101,8 @@ mod tz_info; /// assert!(dt1 >= dt2); /// ``` #[derive(Copy, Clone, Debug)] -#[cfg_attr( - feature = "__internal_rkyv", - derive(Archive, Deserialize, Serialize) -)] -#[cfg_attr( - feature = "__internal_rkyv", - archive_attr(derive(Clone, Copy, Debug)) -)] +#[cfg_attr(feature = "rkyv", derive(Archive, Deserialize, Serialize))] +#[cfg_attr(feature = "rkyv", archive_attr(derive(Clone, Copy, Debug)))] #[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))] pub struct Local; diff --git a/src/offset/utc.rs b/src/offset/utc.rs index c35b2ee40b..0fca3aa5b1 100644 --- a/src/offset/utc.rs +++ b/src/offset/utc.rs @@ -14,7 +14,7 @@ use core::fmt; ))] use std::time::{SystemTime, UNIX_EPOCH}; -#[cfg(feature = "__internal_rkyv")] +#[cfg(feature = "rkyv")] use rkyv::{Archive, Deserialize, Serialize}; use super::{FixedOffset, LocalResult, Offset, TimeZone}; @@ -40,18 +40,12 @@ use crate::DateTime; /// assert_eq!(Utc.with_ymd_and_hms(1970, 1, 1, 0, 1, 1).unwrap(), dt); /// ``` #[derive(Copy, Clone, PartialEq, Eq, Hash)] +#[cfg_attr(feature = "rkyv", derive(Archive, Deserialize, Serialize))] #[cfg_attr( - feature = "__internal_rkyv", - derive(Archive, Deserialize, Serialize) -)] -#[cfg_attr( - feature = "__internal_rkyv", + feature = "rkyv", archive_attr(derive(Clone, Copy, PartialEq, Eq, Debug, Hash)) )] -#[cfg_attr( - feature = "__internal_rkyv", - archive(compare(PartialEq)) -)] +#[cfg_attr(feature = "rkyv", archive(compare(PartialEq)))] #[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))] pub struct Utc; diff --git a/src/time_delta.rs b/src/time_delta.rs index 70c768f0e9..b3b4533a4d 100644 --- a/src/time_delta.rs +++ b/src/time_delta.rs @@ -16,7 +16,7 @@ use core::{fmt, i64}; #[cfg(feature = "std")] use std::error::Error; -#[cfg(feature = "__internal_rkyv")] +#[cfg(feature = "rkyv")] use rkyv::{Archive, Deserialize, Serialize}; /// The number of nanoseconds in a microsecond. @@ -51,18 +51,12 @@ macro_rules! try_opt { /// /// This also allows for the negative duration; see individual methods for details. #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug, Hash)] +#[cfg_attr(feature = "rkyv", derive(Archive, Deserialize, Serialize))] #[cfg_attr( - feature = "__internal_rkyv", - derive(Archive, Deserialize, Serialize) -)] -#[cfg_attr( - feature = "__internal_rkyv", + feature = "rkyv", archive_attr(derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug, Hash)) )] -#[cfg_attr( - feature = "__internal_rkyv", - archive(compare(PartialEq, PartialOrd)) -)] +#[cfg_attr(feature = "rkyv", archive(compare(PartialEq, PartialOrd)))] pub struct TimeDelta { secs: i64, nanos: i32, // Always 0 <= nanos < NANOS_PER_SEC diff --git a/src/weekday.rs b/src/weekday.rs index 80da4fbd9f..b16e762391 100644 --- a/src/weekday.rs +++ b/src/weekday.rs @@ -1,6 +1,6 @@ use core::fmt; -#[cfg(feature = "__internal_rkyv")] +#[cfg(feature = "rkyv")] use rkyv::{Archive, Deserialize, Serialize}; use crate::OutOfRange; @@ -30,18 +30,12 @@ use crate::OutOfRange; /// assert_eq!(sunday.pred(), Weekday::Sat); /// ``` #[derive(PartialEq, Eq, Copy, Clone, Debug, Hash)] +#[cfg_attr(feature = "rkyv", derive(Archive, Deserialize, Serialize))] #[cfg_attr( - feature = "__internal_rkyv", - derive(Archive, Deserialize, Serialize) -)] -#[cfg_attr( - feature = "__internal_rkyv", + feature = "rkyv", archive_attr(derive(Clone, Copy, PartialEq, Eq, Debug, Hash)) )] -#[cfg_attr( - feature = "__internal_rkyv", - archive(compare(PartialEq)) -)] +#[cfg_attr(feature = "rkyv", archive(compare(PartialEq)))] #[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))] pub enum Weekday { /// Monday.