0.2.1: language changes.
- `std::hash` has been renewed. - `DelayedFormat` no longer has a redundant lifetime.
This commit is contained in:
parent
e80501dcb3
commit
c11b6deb5a
|
@ -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.
|
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.
|
Versions with only mechnical changes will be omitted from the following list.
|
||||||
|
|
||||||
|
## 0.2.1 (2015-02-21)
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- `DelayedFormat` no longer conveys a redundant lifetime.
|
||||||
|
|
||||||
## 0.2.0 (2015-02-19)
|
## 0.2.0 (2015-02-19)
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "chrono"
|
name = "chrono"
|
||||||
version = "0.2.0"
|
version = "0.2.1"
|
||||||
authors = ["Kang Seonghoon <public+rust@mearie.org>"]
|
authors = ["Kang Seonghoon <public+rust@mearie.org>"]
|
||||||
|
|
||||||
description = "Date and time library for Rust"
|
description = "Date and time library for Rust"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[Chrono][doc] 0.2.0
|
[Chrono][doc] 0.2.1
|
||||||
===================
|
===================
|
||||||
|
|
||||||
[![Chrono on Travis CI][travis-image]][travis]
|
[![Chrono on Travis CI][travis-image]][travis]
|
||||||
|
|
|
@ -224,7 +224,7 @@ fn map_local<Tz: TimeZone, F>(d: &Date<Tz>, mut f: F) -> Option<Date<Tz>>
|
||||||
impl<Tz: TimeZone> Date<Tz> where Tz::Offset: fmt::Display {
|
impl<Tz: TimeZone> Date<Tz> where Tz::Offset: fmt::Display {
|
||||||
/// Formats the date with the specified formatting items.
|
/// Formats the date with the specified formatting items.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn format_with_items<'a, I>(&'a self, items: I) -> DelayedFormat<'a, I>
|
pub fn format_with_items<'a, I>(&self, items: I) -> DelayedFormat<I>
|
||||||
where I: Iterator<Item=Item<'a>> + Clone {
|
where I: Iterator<Item=Item<'a>> + Clone {
|
||||||
DelayedFormat::new_with_offset(Some(self.naive_local()), None, &self.offset, items)
|
DelayedFormat::new_with_offset(Some(self.naive_local()), None, &self.offset, items)
|
||||||
}
|
}
|
||||||
|
@ -232,7 +232,7 @@ impl<Tz: TimeZone> Date<Tz> where Tz::Offset: fmt::Display {
|
||||||
/// Formats the date with the specified format string.
|
/// Formats the date with the specified format string.
|
||||||
/// See the `format::strftime` module on the supported escape sequences.
|
/// See the `format::strftime` module on the supported escape sequences.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn format<'a>(&'a self, fmt: &'a str) -> DelayedFormat<'a, StrftimeItems<'a>> {
|
pub fn format<'a>(&self, fmt: &'a str) -> DelayedFormat<StrftimeItems<'a>> {
|
||||||
self.format_with_items(StrftimeItems::new(fmt))
|
self.format_with_items(StrftimeItems::new(fmt))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -301,8 +301,8 @@ impl<Tz: TimeZone> Ord for Date<Tz> {
|
||||||
fn cmp(&self, other: &Date<Tz>) -> Ordering { self.date.cmp(&other.date) }
|
fn cmp(&self, other: &Date<Tz>) -> Ordering { self.date.cmp(&other.date) }
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<Tz: TimeZone, H: hash::Hasher + hash::Writer> hash::Hash<H> for Date<Tz> {
|
impl<Tz: TimeZone> hash::Hash for Date<Tz> {
|
||||||
fn hash(&self, state: &mut H) { self.date.hash(state) }
|
fn hash<H: hash::Hasher>(&self, state: &mut H) { self.date.hash(state) }
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<Tz: TimeZone> Add<Duration> for Date<Tz> {
|
impl<Tz: TimeZone> Add<Duration> for Date<Tz> {
|
||||||
|
|
|
@ -171,7 +171,7 @@ impl<Tz: TimeZone> DateTime<Tz> where Tz::Offset: fmt::Display {
|
||||||
|
|
||||||
/// Formats the combined date and time with the specified formatting items.
|
/// Formats the combined date and time with the specified formatting items.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn format_with_items<'a, I>(&'a self, items: I) -> DelayedFormat<'a, I>
|
pub fn format_with_items<'a, I>(&self, items: I) -> DelayedFormat<I>
|
||||||
where I: Iterator<Item=Item<'a>> + Clone {
|
where I: Iterator<Item=Item<'a>> + Clone {
|
||||||
let local = self.naive_local();
|
let local = self.naive_local();
|
||||||
DelayedFormat::new_with_offset(Some(local.date()), Some(local.time()), &self.offset, items)
|
DelayedFormat::new_with_offset(Some(local.date()), Some(local.time()), &self.offset, items)
|
||||||
|
@ -180,7 +180,7 @@ impl<Tz: TimeZone> DateTime<Tz> where Tz::Offset: fmt::Display {
|
||||||
/// Formats the combined date and time with the specified format string.
|
/// Formats the combined date and time with the specified format string.
|
||||||
/// See the `format::strftime` module on the supported escape sequences.
|
/// See the `format::strftime` module on the supported escape sequences.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn format<'a>(&'a self, fmt: &'a str) -> DelayedFormat<'a, StrftimeItems<'a>> {
|
pub fn format<'a>(&self, fmt: &'a str) -> DelayedFormat<StrftimeItems<'a>> {
|
||||||
self.format_with_items(StrftimeItems::new(fmt))
|
self.format_with_items(StrftimeItems::new(fmt))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -276,8 +276,8 @@ impl<Tz: TimeZone> Ord for DateTime<Tz> {
|
||||||
fn cmp(&self, other: &DateTime<Tz>) -> Ordering { self.datetime.cmp(&other.datetime) }
|
fn cmp(&self, other: &DateTime<Tz>) -> Ordering { self.datetime.cmp(&other.datetime) }
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<Tz: TimeZone, H: hash::Hasher + hash::Writer> hash::Hash<H> for DateTime<Tz> {
|
impl<Tz: TimeZone> hash::Hash for DateTime<Tz> {
|
||||||
fn hash(&self, state: &mut H) { self.datetime.hash(state) }
|
fn hash<H: hash::Hasher>(&self, state: &mut H) { self.datetime.hash(state) }
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<Tz: TimeZone> Add<Duration> for DateTime<Tz> {
|
impl<Tz: TimeZone> Add<Duration> for DateTime<Tz> {
|
||||||
|
|
|
@ -410,7 +410,7 @@ pub mod strftime;
|
||||||
/// A *temporary* object which can be used as an argument to `format!` or others.
|
/// A *temporary* object which can be used as an argument to `format!` or others.
|
||||||
/// This is normally constructed via `format` methods of each date and time type.
|
/// This is normally constructed via `format` methods of each date and time type.
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct DelayedFormat<'a, I: Iterator<Item=Item<'a>> + Clone> {
|
pub struct DelayedFormat<I> {
|
||||||
/// The date view, if any.
|
/// The date view, if any.
|
||||||
date: Option<NaiveDate>,
|
date: Option<NaiveDate>,
|
||||||
/// The time view, if any.
|
/// The time view, if any.
|
||||||
|
@ -421,22 +421,22 @@ pub struct DelayedFormat<'a, I: Iterator<Item=Item<'a>> + Clone> {
|
||||||
items: I,
|
items: I,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, I: Iterator<Item=Item<'a>> + Clone> DelayedFormat<'a, I> {
|
impl<'a, I: Iterator<Item=Item<'a>> + Clone> DelayedFormat<I> {
|
||||||
/// Makes a new `DelayedFormat` value out of local date and time.
|
/// Makes a new `DelayedFormat` value out of local date and time.
|
||||||
pub fn new(date: Option<NaiveDate>, time: Option<NaiveTime>, items: I) -> DelayedFormat<'a, I> {
|
pub fn new(date: Option<NaiveDate>, time: Option<NaiveTime>, items: I) -> DelayedFormat<I> {
|
||||||
DelayedFormat { date: date, time: time, off: None, items: items }
|
DelayedFormat { date: date, time: time, off: None, items: items }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Makes a new `DelayedFormat` value out of local date and time and UTC offset.
|
/// Makes a new `DelayedFormat` value out of local date and time and UTC offset.
|
||||||
pub fn new_with_offset<Off>(date: Option<NaiveDate>, time: Option<NaiveTime>,
|
pub fn new_with_offset<Off>(date: Option<NaiveDate>, time: Option<NaiveTime>,
|
||||||
offset: &Off, items: I) -> DelayedFormat<'a, I>
|
offset: &Off, items: I) -> DelayedFormat<I>
|
||||||
where Off: Offset + fmt::Display {
|
where Off: Offset + fmt::Display {
|
||||||
let name_and_diff = (offset.to_string(), offset.local_minus_utc());
|
let name_and_diff = (offset.to_string(), offset.local_minus_utc());
|
||||||
DelayedFormat { date: date, time: time, off: Some(name_and_diff), items: items }
|
DelayedFormat { date: date, time: time, off: Some(name_and_diff), items: items }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, I: Iterator<Item=Item<'a>> + Clone> fmt::Display for DelayedFormat<'a, I> {
|
impl<'a, I: Iterator<Item=Item<'a>> + Clone> fmt::Display for DelayedFormat<I> {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
format(f, self.date.as_ref(), self.time.as_ref(), self.off.as_ref(), self.items.clone())
|
format(f, self.date.as_ref(), self.time.as_ref(), self.off.as_ref(), self.items.clone())
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
||||||
# Chrono 0.2.0
|
# Chrono 0.2.1
|
||||||
|
|
||||||
Date and time handling for Rust. (also known as `rust-chrono`)
|
Date and time handling for Rust. (also known as `rust-chrono`)
|
||||||
It aims to be a feature-complete superset of the [time](https://github.com/rust-lang/time) library.
|
It aims to be a feature-complete superset of the [time](https://github.com/rust-lang/time) library.
|
||||||
|
@ -266,7 +266,7 @@ Advanced time zone handling is not yet supported (but is planned in 0.3).
|
||||||
|
|
||||||
#![doc(html_root_url = "https://lifthrasiir.github.io/rust-chrono/")]
|
#![doc(html_root_url = "https://lifthrasiir.github.io/rust-chrono/")]
|
||||||
|
|
||||||
#![feature(core, collections, hash, std_misc)] // lib stability features as per RFC #507
|
#![feature(core, collections, std_misc)] // lib stability features as per RFC #507
|
||||||
#![cfg_attr(test, feature(test))] // ditto
|
#![cfg_attr(test, feature(test))] // ditto
|
||||||
#![deny(missing_docs)]
|
#![deny(missing_docs)]
|
||||||
|
|
||||||
|
|
|
@ -369,7 +369,7 @@ impl NaiveDate {
|
||||||
|
|
||||||
/// Formats the date with the specified formatting items.
|
/// Formats the date with the specified formatting items.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn format_with_items<'a, I>(&'a self, items: I) -> DelayedFormat<'a, I>
|
pub fn format_with_items<'a, I>(&self, items: I) -> DelayedFormat<I>
|
||||||
where I: Iterator<Item=Item<'a>> + Clone {
|
where I: Iterator<Item=Item<'a>> + Clone {
|
||||||
DelayedFormat::new(Some(self.clone()), None, items)
|
DelayedFormat::new(Some(self.clone()), None, items)
|
||||||
}
|
}
|
||||||
|
@ -377,7 +377,7 @@ impl NaiveDate {
|
||||||
/// Formats the date with the specified format string.
|
/// Formats the date with the specified format string.
|
||||||
/// See the `format::strftime` module on the supported escape sequences.
|
/// See the `format::strftime` module on the supported escape sequences.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn format<'a>(&'a self, fmt: &'a str) -> DelayedFormat<'a, StrftimeItems<'a>> {
|
pub fn format<'a>(&self, fmt: &'a str) -> DelayedFormat<StrftimeItems<'a>> {
|
||||||
self.format_with_items(StrftimeItems::new(fmt))
|
self.format_with_items(StrftimeItems::new(fmt))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -452,8 +452,8 @@ impl Datelike for NaiveDate {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<H: hash::Hasher + hash::Writer> hash::Hash<H> for NaiveDate {
|
impl hash::Hash for NaiveDate {
|
||||||
fn hash(&self, state: &mut H) { self.ymdf.hash(state) }
|
fn hash<H: hash::Hasher>(&self, state: &mut H) { self.ymdf.hash(state) }
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Add<Duration> for NaiveDate {
|
impl Add<Duration> for NaiveDate {
|
||||||
|
@ -1112,7 +1112,7 @@ mod internals {
|
||||||
pub const MAX_MDL: u32 = (12 << 6) | (31 << 1) | 1;
|
pub const MAX_MDL: u32 = (12 << 6) | (31 << 1) | 1;
|
||||||
|
|
||||||
const XX: i8 = -128;
|
const XX: i8 = -128;
|
||||||
static MDL_TO_OL: [i8; (MAX_MDL as usize + 1us)] = [
|
static MDL_TO_OL: [i8; (MAX_MDL as usize + 1)] = [
|
||||||
XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX,
|
XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX,
|
||||||
XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX,
|
XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX,
|
||||||
XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX,
|
XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX,
|
||||||
|
@ -1167,7 +1167,7 @@ mod internals {
|
||||||
98,100, 98,100, 98,100, 98,100, 98,100, 98,100, 98,100, 98,100, // 12
|
98,100, 98,100, 98,100, 98,100, 98,100, 98,100, 98,100, 98,100, // 12
|
||||||
];
|
];
|
||||||
|
|
||||||
static OL_TO_MDL: [u8; (MAX_OL as usize + 1us)] = [
|
static OL_TO_MDL: [u8; (MAX_OL as usize + 1)] = [
|
||||||
0, 0, // 0
|
0, 0, // 0
|
||||||
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
||||||
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
||||||
|
|
|
@ -158,7 +158,7 @@ impl NaiveDateTime {
|
||||||
|
|
||||||
/// Formats the combined date and time with the specified formatting items.
|
/// Formats the combined date and time with the specified formatting items.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn format_with_items<'a, I>(&'a self, items: I) -> DelayedFormat<'a, I>
|
pub fn format_with_items<'a, I>(&self, items: I) -> DelayedFormat<I>
|
||||||
where I: Iterator<Item=Item<'a>> + Clone {
|
where I: Iterator<Item=Item<'a>> + Clone {
|
||||||
DelayedFormat::new(Some(self.date.clone()), Some(self.time.clone()), items)
|
DelayedFormat::new(Some(self.date.clone()), Some(self.time.clone()), items)
|
||||||
}
|
}
|
||||||
|
@ -166,7 +166,7 @@ impl NaiveDateTime {
|
||||||
/// Formats the combined date and time with the specified format string.
|
/// Formats the combined date and time with the specified format string.
|
||||||
/// See the `format::strftime` module on the supported escape sequences.
|
/// See the `format::strftime` module on the supported escape sequences.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn format<'a>(&'a self, fmt: &'a str) -> DelayedFormat<'a, StrftimeItems<'a>> {
|
pub fn format<'a>(&self, fmt: &'a str) -> DelayedFormat<StrftimeItems<'a>> {
|
||||||
self.format_with_items(StrftimeItems::new(fmt))
|
self.format_with_items(StrftimeItems::new(fmt))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -245,8 +245,11 @@ impl Timelike for NaiveDateTime {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<H: hash::Hasher + hash::Writer> hash::Hash<H> for NaiveDateTime {
|
impl hash::Hash for NaiveDateTime {
|
||||||
fn hash(&self, state: &mut H) { self.date.hash(state); self.time.hash(state) }
|
fn hash<H: hash::Hasher>(&self, state: &mut H) {
|
||||||
|
self.date.hash(state);
|
||||||
|
self.time.hash(state);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Add<Duration> for NaiveDateTime {
|
impl Add<Duration> for NaiveDateTime {
|
||||||
|
|
|
@ -128,7 +128,7 @@ impl NaiveTime {
|
||||||
|
|
||||||
/// Formats the time with the specified formatting items.
|
/// Formats the time with the specified formatting items.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn format_with_items<'a, I>(&'a self, items: I) -> DelayedFormat<'a, I>
|
pub fn format_with_items<'a, I>(&self, items: I) -> DelayedFormat<I>
|
||||||
where I: Iterator<Item=Item<'a>> + Clone {
|
where I: Iterator<Item=Item<'a>> + Clone {
|
||||||
DelayedFormat::new(None, Some(self.clone()), items)
|
DelayedFormat::new(None, Some(self.clone()), items)
|
||||||
}
|
}
|
||||||
|
@ -136,7 +136,7 @@ impl NaiveTime {
|
||||||
/// Formats the time with the specified format string.
|
/// Formats the time with the specified format string.
|
||||||
/// See the `format::strftime` module on the supported escape sequences.
|
/// See the `format::strftime` module on the supported escape sequences.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn format<'a>(&'a self, fmt: &'a str) -> DelayedFormat<'a, StrftimeItems<'a>> {
|
pub fn format<'a>(&self, fmt: &'a str) -> DelayedFormat<StrftimeItems<'a>> {
|
||||||
self.format_with_items(StrftimeItems::new(fmt))
|
self.format_with_items(StrftimeItems::new(fmt))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -187,8 +187,11 @@ impl Timelike for NaiveTime {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<H: hash::Hasher + hash::Writer> hash::Hash<H> for NaiveTime {
|
impl hash::Hash for NaiveTime {
|
||||||
fn hash(&self, state: &mut H) { self.secs.hash(state); self.frac.hash(state) }
|
fn hash<H: hash::Hasher>(&self, state: &mut H) {
|
||||||
|
self.secs.hash(state);
|
||||||
|
self.frac.hash(state);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Add<Duration> for NaiveTime {
|
impl Add<Duration> for NaiveTime {
|
||||||
|
|
Loading…
Reference in New Issue