From 3303127415337f20c691bdc540b53f1a5bff0360 Mon Sep 17 00:00:00 2001 From: Ken Tossell Date: Sat, 3 Jan 2015 17:45:07 -0500 Subject: [PATCH] Fixed build against rust nightly. Added 'use' statements for cmd::Ordering, ops::{Add, Sub}, borrow::IntoCow, num::ToPrimitive Changed deriving -> derive. Changed [x, ..N] -> [x; N]. Made format(f: &fmt::Formatter) return fmt::Result instead of IoResult. Had to raise generic errors in a couple of cases where IoResult's fields were being set (but these errors were being thrown out anyway). Temporarily set #![feature(old_orphan_check)] because Thanks for @eddyb for explaining the format() situation. --- src/date.rs | 7 +++++-- src/datetime.rs | 4 +++- src/format.rs | 24 +++++++++++++----------- src/lib.rs | 3 ++- src/naive/date.rs | 25 +++++++++++++------------ src/naive/datetime.rs | 5 +++-- src/naive/time.rs | 3 ++- src/offset.rs | 9 +++++---- src/time.rs | 4 +++- 9 files changed, 49 insertions(+), 35 deletions(-) diff --git a/src/date.rs b/src/date.rs index 840a84f..c4ee103 100644 --- a/src/date.rs +++ b/src/date.rs @@ -7,6 +7,8 @@ */ use std::{fmt, hash}; +use std::cmp::Ordering; +use std::ops::{Add, Sub}; use {Weekday, Datelike}; use duration::Duration; @@ -18,7 +20,7 @@ use datetime::DateTime; use format::DelayedFormat; /// ISO 8601 calendar date with timezone. -#[deriving(Clone)] +#[derive(Clone)] pub struct Date { date: NaiveDate, offset: Off, @@ -289,6 +291,7 @@ impl fmt::Show for Date { #[cfg(test)] mod tests { + use std::borrow::IntoCow; use std::fmt; use std::str::SendStr; @@ -301,7 +304,7 @@ mod tests { use datetime::DateTime; use offset::{Offset, LocalResult}; - #[deriving(Copy, Clone, PartialEq, Eq)] + #[derive(Copy, Clone, PartialEq, Eq)] struct UTC1y; // same to UTC but with an offset of 365 days impl Offset for UTC1y { diff --git a/src/datetime.rs b/src/datetime.rs index b86e0d1..b51a4d8 100644 --- a/src/datetime.rs +++ b/src/datetime.rs @@ -7,6 +7,8 @@ */ use std::{fmt, hash}; +use std::cmp::Ordering; +use std::ops::{Add, Sub}; use {Weekday, Timelike, Datelike}; use offset::Offset; @@ -17,7 +19,7 @@ use date::Date; use format::DelayedFormat; /// ISO 8601 combined date and time with timezone. -#[deriving(Clone)] +#[derive(Clone)] pub struct DateTime { datetime: NaiveDateTime, offset: Off, diff --git a/src/format.rs b/src/format.rs index a3f6a09..5731110 100644 --- a/src/format.rs +++ b/src/format.rs @@ -8,7 +8,7 @@ use std::fmt; use std::str::SendStr; -use std::io::{IoResult, IoError, InvalidInput}; +//use std::io::{IoResult, IoError, InvalidInput}; use {Datelike, Timelike}; use duration::Duration; @@ -17,16 +17,16 @@ use naive::date::NaiveDate; use naive::time::NaiveTime; /// The internal workhouse for `DelayedFormat`. -fn format(w: &mut Writer, date: Option<&NaiveDate>, time: Option<&NaiveTime>, - off: Option<&(SendStr, Duration)>, fmt: &str) -> IoResult<()> { - static SHORT_MONTHS: [&'static str, ..12] = +fn format(w: &mut fmt::Formatter, date: Option<&NaiveDate>, time: Option<&NaiveTime>, + off: Option<&(SendStr, Duration)>, fmt: &str) -> fmt::Result { + static SHORT_MONTHS: [&'static str; 12] = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; - static LONG_MONTHS: [&'static str, ..12] = + static LONG_MONTHS: [&'static str; 12] = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; - static SHORT_WEEKDAYS: [&'static str, ..7] = + static SHORT_WEEKDAYS: [&'static str; 7] = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]; - static LONG_WEEKDAYS: [&'static str, ..7] = + static LONG_WEEKDAYS: [&'static str; 7] = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]; let mut parts = fmt.split('%'); @@ -159,8 +159,9 @@ fn format(w: &mut Writer, date: Option<&NaiveDate>, time: Option<&NaiveTime>, (Some('n'), _, _, _) => try!(write!(w, "\n")), (Some(c), _, _, _) => { - return Err(IoError { kind: InvalidInput, desc: "invalid date/time format", - detail: Some(format!("unsupported escape sequence %{}", c)) }); + return Err(fmt::Error); + // return Err(IoError { kind: InvalidInput, desc: "invalid date/time format", + // detail: Some(format!("unsupported escape sequence %{}", c)) }); } (None, _, _, _) => { @@ -174,8 +175,9 @@ fn format(w: &mut Writer, date: Option<&NaiveDate>, time: Option<&NaiveTime>, } if last_was_percent { // a stray `%` - Err(IoError { kind: InvalidInput, - desc: "invalid date/time format: stray `%`", detail: None }) + return Err(fmt::Error); + // Err(IoError { kind: InvalidInput, + // desc: "invalid date/time format: stray `%`", detail: None }) } else { Ok(()) } diff --git a/src/lib.rs b/src/lib.rs index 151065d..5387ecf 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -185,6 +185,7 @@ Advanced offset handling and date/time parsing is not yet supported (but is plan #![doc(html_root_url = "https://lifthrasiir.github.io/rust-chrono/")] #![feature(macro_rules, associated_types, default_type_params)] +#![feature(old_orphan_check)] // TODO: Remove this when derive(Hash) no longer needs it. #![deny(missing_docs)] extern crate "time" as stdtime; @@ -226,7 +227,7 @@ pub mod format; /// /// The order of the days of week depends on the context. /// One should prefer `*_from_monday` or `*_from_sunday` methods to get the correct result. -#[deriving(PartialEq, Eq, Copy, Clone, FromPrimitive, Show)] +#[derive(PartialEq, Eq, Copy, Clone, FromPrimitive, Show)] pub enum Weekday { /// Monday. Mon = 0, diff --git a/src/naive/date.rs b/src/naive/date.rs index 8cb5f74..41ed557 100644 --- a/src/naive/date.rs +++ b/src/naive/date.rs @@ -7,7 +7,8 @@ */ use std::fmt; -use std::num::Int; +use std::num::{Int, ToPrimitive}; +use std::ops::{Add, Sub}; use {Weekday, Datelike}; use div::div_mod_floor; @@ -24,7 +25,7 @@ const MIN_YEAR: i32 = internals::MIN_YEAR as i32; /// ISO 8601 calendar date without timezone. /// Allows for every proleptic Gregorian date from Jan 1, 262145 BCE to Dec 31, 262143 CE. /// Also supports the conversion from ISO 8601 ordinal and week date. -#[deriving(PartialEq, Eq, PartialOrd, Ord, Copy, Clone, Hash)] +#[derive(PartialEq, Eq, PartialOrd, Ord, Copy, Clone, Hash)] pub struct NaiveDate { ymdf: DateImpl, // (year << 13) | of } @@ -799,7 +800,7 @@ mod internals { /// where `a` is `1` for the common year (simplifies the `Of` validation) /// and `bbb` is a non-zero `Weekday` (mapping `Mon` to 7) of the last day in the past year /// (simplifies the day of week calculation from the 1-based ordinal). - #[deriving(PartialEq, Eq, Copy)] + #[derive(PartialEq, Eq, Copy)] pub struct YearFlags(pub u8); pub const A: YearFlags = YearFlags(0o15); pub const AG: YearFlags = YearFlags(0o05); @@ -810,7 +811,7 @@ mod internals { pub const F: YearFlags = YearFlags(0o17); pub const FE: YearFlags = YearFlags(0o07); pub const G: YearFlags = YearFlags(0o16); pub const GF: YearFlags = YearFlags(0o06); - static YEAR_TO_FLAGS: [YearFlags, ..400] = [ + static YEAR_TO_FLAGS: [YearFlags; 400] = [ BA, G, F, E, DC, B, A, G, FE, D, C, B, AG, F, E, D, CB, A, G, F, ED, C, B, A, GF, E, D, C, BA, G, F, E, DC, B, A, G, FE, D, C, B, AG, F, E, D, CB, A, G, F, ED, C, B, A, GF, E, D, C, BA, G, F, E, @@ -833,7 +834,7 @@ mod internals { FE, D, C, B, AG, F, E, D, CB, A, G, F, ED, C, B, A, GF, E, D, C, // 400 ]; - static YEAR_DELTAS: [u8, ..401] = [ + static YEAR_DELTAS: [u8; 401] = [ 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, @@ -928,7 +929,7 @@ mod internals { pub const MAX_MDL: u32 = (12 << 6) | (31 << 1) | 1; const XX: i8 = -128; - static MDL_TO_OL: [i8, ..(MAX_MDL as uint + 1u)] = [ + static MDL_TO_OL: [i8; (MAX_MDL as uint + 1u)] = [ 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, @@ -983,7 +984,7 @@ mod internals { 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 uint + 1u)] = [ + static OL_TO_MDL: [u8; (MAX_OL as uint + 1u)] = [ 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, @@ -1039,7 +1040,7 @@ mod internals { /// /// The whole bits except for the least 3 bits are referred as `Ol` (ordinal and leap flag), /// which is an index to the `OL_TO_MDL` lookup table. - #[deriving(PartialEq, PartialOrd, Copy)] + #[derive(PartialEq, PartialOrd, Copy)] pub struct Of(pub u32); impl Of { @@ -1140,7 +1141,7 @@ mod internals { /// The whole bits except for the least 3 bits are referred as `Mdl` /// (month, day of month and leap flag), /// which is an index to the `MDL_TO_OL` lookup table. - #[deriving(PartialEq, PartialOrd, Copy)] + #[derive(PartialEq, PartialOrd, Copy)] pub struct Mdf(pub u32); impl Mdf { @@ -1242,9 +1243,9 @@ mod internals { use std::iter::range_inclusive; use std::u32; - const NONLEAP_FLAGS: [YearFlags, ..7] = [A, B, C, D, E, F, G]; - const LEAP_FLAGS: [YearFlags, ..7] = [AG, BA, CB, DC, ED, FE, GF]; - const FLAGS: [YearFlags, ..14] = [A, B, C, D, E, F, G, AG, BA, CB, DC, ED, FE, GF]; + const NONLEAP_FLAGS: [YearFlags; 7] = [A, B, C, D, E, F, G]; + const LEAP_FLAGS: [YearFlags; 7] = [AG, BA, CB, DC, ED, FE, GF]; + const FLAGS: [YearFlags; 14] = [A, B, C, D, E, F, G, AG, BA, CB, DC, ED, FE, GF]; #[test] fn test_year_flags_ndays_from_year() { diff --git a/src/naive/datetime.rs b/src/naive/datetime.rs index e6e9c63..9a49212 100644 --- a/src/naive/datetime.rs +++ b/src/naive/datetime.rs @@ -7,7 +7,8 @@ */ use std::fmt; -use std::num::Int; +use std::num::{Int, ToPrimitive}; +use std::ops::{Add, Sub}; use {Weekday, Timelike, Datelike}; use div::div_mod_floor; @@ -17,7 +18,7 @@ use naive::date::NaiveDate; use format::DelayedFormat; /// ISO 8601 combined date and time without timezone. -#[deriving(PartialEq, Eq, PartialOrd, Ord, Copy, Clone, Hash)] +#[derive(PartialEq, Eq, PartialOrd, Ord, Copy, Clone, Hash)] pub struct NaiveDateTime { date: NaiveDate, time: NaiveTime, diff --git a/src/naive/time.rs b/src/naive/time.rs index a1f8ff8..2779e5b 100644 --- a/src/naive/time.rs +++ b/src/naive/time.rs @@ -8,6 +8,7 @@ use std::fmt; use std::num::Int; +use std::ops::{Add, Sub}; use Timelike; use div::div_mod_floor; @@ -17,7 +18,7 @@ use format::DelayedFormat; /// ISO 8601 time without timezone. /// Allows for the nanosecond precision and optional leap second representation. -#[deriving(PartialEq, Eq, PartialOrd, Ord, Copy, Clone, Hash)] +#[derive(PartialEq, Eq, PartialOrd, Ord, Copy, Clone, Hash)] pub struct NaiveTime { secs: u32, frac: u32, diff --git a/src/offset.rs b/src/offset.rs index 407f3f6..3046928 100644 --- a/src/offset.rs +++ b/src/offset.rs @@ -6,6 +6,7 @@ * Offsets from the local time to UTC. */ +use std::borrow::IntoCow; use std::fmt; use std::str::SendStr; use stdtime; @@ -21,7 +22,7 @@ use time::Time; use datetime::DateTime; /// The conversion result from the local time to the timezone-aware datetime types. -#[deriving(Clone, PartialEq, Show)] +#[derive(Clone, PartialEq, Show)] pub enum LocalResult { /// Given local time representation is invalid. /// This can occur when, for example, the positive timezone transition. @@ -321,7 +322,7 @@ pub trait Offset: Clone + fmt::Show { } /// The UTC timescale. This is the most efficient offset when you don't need the local time. -#[deriving(Copy, Clone, PartialEq, Eq)] +#[derive(Copy, Clone, PartialEq, Eq)] pub struct UTC; impl UTC { @@ -360,7 +361,7 @@ impl fmt::Show for UTC { } /// The fixed offset, from UTC-23:59:59 to UTC+23:59:59. -#[deriving(Copy, Clone, PartialEq, Eq)] +#[derive(Copy, Clone, PartialEq, Eq)] pub struct FixedOffset { local_minus_utc: i32, } @@ -451,7 +452,7 @@ impl fmt::Show for FixedOffset { } /// The local timescale. This is implemented via the standard `time` crate. -#[deriving(Copy, Clone)] +#[derive(Copy, Clone)] pub struct Local { cached: FixedOffset, } diff --git a/src/time.rs b/src/time.rs index 74c91d6..741b90a 100644 --- a/src/time.rs +++ b/src/time.rs @@ -7,6 +7,8 @@ */ use std::{fmt, hash}; +use std::cmp::Ordering; +use std::ops::{Add, Sub}; use Timelike; use offset::Offset; @@ -15,7 +17,7 @@ use naive::time::NaiveTime; use format::DelayedFormat; /// ISO 8601 time with timezone. -#[deriving(Clone)] +#[derive(Clone)] pub struct Time { time: NaiveTime, offset: Off,