diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b87012..21af1cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,12 @@ Chrono obeys the principle of [Semantic Versioning](http://semver.org/). There were/are numerous minor versions before 1.0 due to the language changes. Versions with only mechnical changes will be omitted from the following list. +## 0.4.next + +* More strongly deprecate RustcSerialize: remove it from documentation unless + the feature is enabled, issue a deprecation warning if the rustc-serialize + feature is enabled (@quodlibetor) + ## 0.4.1 ### Bug Fixes diff --git a/README.md b/README.md index 1ce65f9..1d64138 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -[Chrono][docsrs] 0.4.0 -====================== +[Chrono][docsrs]: Date and Time for Rust +======================================== [![Chrono on Travis CI][travis-image]][travis] [![Chrono on Appveyor][appveyor-image]][appveyor] @@ -12,9 +12,8 @@ [appveyor]: https://ci.appveyor.com/project/chronotope/chrono [cratesio-image]: https://img.shields.io/crates/v/chrono.svg [cratesio]: https://crates.io/crates/chrono -[docsrs-image]: https://docs.rs/chrono/badge.svg?version=0.4.0 -[docsrs]: https://docs.rs/chrono/0.4.0/ - +[docsrs-image]: https://docs.rs/chrono/badge.svg +[docsrs]: https://docs.rs/chrono Date and time handling for Rust. It aims to be a feature-complete superset of @@ -46,21 +45,14 @@ Put this in your `Cargo.toml`: chrono = "0.4" ``` -Or, if you want [Serde](https://github.com/serde-rs/serde) or -[rustc-serialize](https://github.com/rust-lang-nursery/rustc-serialize) support, -include the features like this: +Or, if you want [Serde](https://github.com/serde-rs/serde) include the feature +like this: ```toml [dependencies] -chrono = { version = "0.4", features = ["serde", "rustc-serialize"] } +chrono = { version = "0.4", features = ["serde"] } ``` -> Note that Chrono's support for rustc-serialize is now considered deprecated. -Starting from 0.4.0 there is no further guarantee that -the features available in Serde will be also available to rustc-serialize, -and the support can be removed in any future major version. -**Rustc-serialize users are strongly recommended to migrate to Serde.** - Then put this in your crate root: ```rust diff --git a/src/datetime.rs b/src/datetime.rs index 3033485..269b246 100644 --- a/src/datetime.rs +++ b/src/datetime.rs @@ -701,7 +701,9 @@ pub mod rustc_serialize { } } + #[allow(deprecated)] impl Decodable for TsSeconds { + #[allow(deprecated)] fn decode(d: &mut D) -> Result, D::Error> { from(FixedOffset::east(0).timestamp_opt(d.read_i64()?, 0), d) .map(TsSeconds) @@ -723,13 +725,16 @@ pub mod rustc_serialize { #[derive(Debug)] pub struct TsSeconds(DateTime); + #[allow(deprecated)] impl From> for DateTime { /// Pull the inner DateTime out + #[allow(deprecated)] fn from(obj: TsSeconds) -> DateTime { obj.0 } } + #[allow(deprecated)] impl Deref for TsSeconds { type Target = DateTime; @@ -738,6 +743,7 @@ pub mod rustc_serialize { } } + #[allow(deprecated)] impl Decodable for TsSeconds { fn decode(d: &mut D) -> Result, D::Error> { from(Utc.timestamp_opt(d.read_i64()?, 0), d) @@ -756,7 +762,9 @@ pub mod rustc_serialize { } #[cfg(feature="clock")] + #[allow(deprecated)] impl Decodable for TsSeconds { + #[allow(deprecated)] fn decode(d: &mut D) -> Result, D::Error> { from(Utc.timestamp_opt(d.read_i64()?, 0), d) .map(|dt| TsSeconds(dt.with_timezone(&Local))) diff --git a/src/format/mod.rs b/src/format/mod.rs index de13d2c..fc1e902 100644 --- a/src/format/mod.rs +++ b/src/format/mod.rs @@ -269,8 +269,6 @@ macro_rules! fix { ($x:ident) => (Item::Fixed(Fixed::$x)) } #[derive(Debug, Clone, PartialEq, Eq, Copy)] pub struct ParseError(ParseErrorKind); -// clippy false positive https://github.com/rust-lang-nursery/rust-clippy/issues/2475 -#[cfg_attr(feature = "cargo-clippy", allow(empty_line_after_outer_attr))] #[derive(Debug, Clone, PartialEq, Eq, Copy)] enum ParseErrorKind { /// Given field is out of permitted range. diff --git a/src/lib.rs b/src/lib.rs index ce202bf..658221b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -414,7 +414,8 @@ pub use oldtime::Duration; #[doc(no_inline)] pub use naive::{NaiveDate, IsoWeek, NaiveTime, NaiveDateTime}; pub use date::{Date, MIN_DATE, MAX_DATE}; pub use datetime::{DateTime, SecondsFormat}; -#[cfg(feature = "rustc-serialize")] pub use datetime::rustc_serialize::TsSeconds; +#[cfg(feature = "rustc-serialize")] +pub use datetime::rustc_serialize::TsSeconds; pub use format::{ParseError, ParseResult}; pub use round::SubsecRound; @@ -458,6 +459,7 @@ pub mod naive { pub use self::time::NaiveTime; pub use self::datetime::NaiveDateTime; #[cfg(feature = "rustc-serialize")] + #[allow(deprecated)] pub use self::datetime::rustc_serialize::TsSeconds; diff --git a/src/naive/datetime.rs b/src/naive/datetime.rs index b1212bf..b5d1ce5 100644 --- a/src/naive/datetime.rs +++ b/src/naive/datetime.rs @@ -1503,24 +1503,32 @@ pub mod rustc_serialize { /// A `DateTime` that can be deserialized from a seconds-based timestamp #[derive(Debug)] + #[deprecated(since = "1.4.2", + note = "RustcSerialize will be removed before chrono 1.0, use Serde instead")] pub struct TsSeconds(NaiveDateTime); + #[allow(deprecated)] impl From for NaiveDateTime { /// Pull the internal NaiveDateTime out + #[allow(deprecated)] fn from(obj: TsSeconds) -> NaiveDateTime { obj.0 } } + #[allow(deprecated)] impl Deref for TsSeconds { type Target = NaiveDateTime; + #[allow(deprecated)] fn deref(&self) -> &Self::Target { &self.0 } } + #[allow(deprecated)] impl Decodable for TsSeconds { + #[allow(deprecated)] fn decode(d: &mut D) -> Result { Ok(TsSeconds( NaiveDateTime::from_timestamp_opt(d.read_i64()?, 0)