Added error source locations.

[?]
CrEcTsRjb1hHQjHuumqRfqdbVV4X58iLEubi4noaDPFa
Jul 22, 2021, 3:17 AM
VGDNIY332BPU4XV76EWOXVLXBZ5E6RXXT7JRWJYDVFBLUFT6U6KAC

Dependencies

  • [2] TD7KX2PI Added year-on-year transform.
  • [3] XIWTRGR6 Prepare to make external iterator for TimeSeries.
  • [4] IYW574EK Created RegularTimeSeriesIter.
  • [5] YMV7RPQ5 Improved csv reading and cleanup up serialization.
  • [6] QYLGEDIV First record.

Change contents

  • edit in src/lib.rs at line 1
    [3.16][2.33:57]()
    #![deny(missing_docs)]
  • replacement in src/lib.rs at line 68
    [3.789][2.786:827]()
    (self.0 % 12 + 1_isize) as usize
    [3.789]
    [3.809]
    (self.0 % 12 + 1) as usize
  • replacement in src/lib.rs at line 79
    [2.918][2.918:966]()
    MonthlyDate(year * 12 + month as isize)
    [2.918]
    [3.1133]
    MonthlyDate(year * 12 + (month - 1) as isize)
  • replacement in src/lib.rs at line 128
    [3.702][3.702:748]()
    .field("month", &(self.month() + 1))
    [3.702]
    [3.748]
    .field("month", &(self.month()))
  • replacement in src/lib.rs at line 175
    [3.348][3.348:557]()
    let s = match fs::read_to_string(path) {
    Ok(s) => s,
    Err(_) => {
    println!("Could not find file [{}].", path);
    panic!()
    },
    };
    [3.348]
    [3.557]
    let s = fs::read_to_string(path)
    .map_err(|_| failed_to_read_file(file!(), line!(), &path))?;
  • replacement in src/lib.rs at line 185
    [3.764][3.764:840]()
    return Err(failed_to_parse_csv_date(path, i + 1, line))
    [3.764]
    [3.840]
    return Err(failed_to_parse_csv_date(
    file!(),
    line!(),
    path,
    i + 1,
    line
    ))
  • replacement in src/lib.rs at line 198
    [3.982][3.982:1058]()
    return Err(failed_to_parse_csv_date(path, i + 1, line))
    [3.982]
    [3.1058]
    return Err(failed_to_parse_csv_date(
    file!(),
    line!(),
    path,
    i + 1,
    line
    ))
  • replacement in src/lib.rs at line 211
    [3.1215][3.1215:1292]()
    return Err(failed_to_parse_csv_value(path, i + 1, line))
    [3.1215]
    [3.1292]
    return Err(failed_to_parse_csv_value(
    file!(),
    line!(),
    path,
    i + 1,
    line
    ))
  • replacement in src/lib.rs at line 246
    [2.1715][3.1523:1671](),[3.4384][3.1523:1671]()
    if self.0.is_empty() { return Err(time_series_is_empty()) };
    if self.0.len() == 1 { return Err(time_series_has_only_one_point()) };
    [2.1715]
    [2.1716]
    if self.0.is_empty() { return Err(time_series_is_empty(file!(), line!())) };
    if self.0.len() == 1 { return Err(time_series_has_only_one_point(file!(), line!())) };
  • replacement in src/lib.rs at line 252
    [2.1805][2.1805:1872]()
    let duration = Duration::between(second_date, first_date);
    [2.1805]
    [2.1872]
    let duration = Duration::between(first_date, second_date);
  • replacement in src/lib.rs at line 256
    [2.1980][2.1980:2144]()
    &format!("{}-{}-01", first_date.year(), first_date.month()),
    &format!("{}-{}-01", second_date.year(), second_date.month()),
    [2.1980]
    [2.2144]
    file!(),
    line!(),
    &format!("{}-{:02}-01", first_date.year(), first_date.month()),
    &format!("{}-{:02}-01", second_date.year(), second_date.month()),
  • edit in src/lib.rs at line 389
    [3.1487][3.1487:1488]()
  • replacement in src/lib.rs at line 443
    [2.3210][2.3210:3275]()
    if date < self.first_date() || date > self.last_date(){
    [2.3210]
    [2.3275]
    if date < self.first_date() || date > self.last_date() {
  • replacement in src/lib.rs at line 446
    [2.3339][2.3339:3482]()
    &format!(
    "{}-{:02}-01",
    date.year(),
    date.month()
    [2.3339]
    [2.3482]
    file!(),
    line!(),
    &format!( "{}-{:02}-01", date.year(), date.month()),
  • replacement in src/lib.rs at line 451
    [2.3514][2.3514:3526]()
    )};
    [2.3514]
    [2.3526]
    };
  • replacement in src/lib.rs at line 458
    [2.3716][2.3716:3859]()
    &format!(
    "{}-{:02}-01",
    date.year(),
    date.month()
    [2.3716]
    [2.3859]
    file!(),
    line!(),
    &format!("{}-{:02}-01", date.year(), date.month()),
  • replacement in src/lib.rs at line 463
    [2.3891][2.3891:3903]()
    )};
    [2.3891]
    [2.3903]
    };
  • edit in src/error.rs at line 12
    [2.6546]
    [2.6546]
    impl std::error::Error for Error {}
  • replacement in src/error.rs at line 16
    [2.6551][2.6551:6604]()
    pub fn date_not_in_timeseries(date: &str) -> Error {
    [2.6551]
    [2.6604]
    pub fn date_not_in_timeseries(
    code_file: &str,
    code_line: u32,
    date: &str,
    ) -> Error
    {
  • replacement in src/error.rs at line 23
    [2.6623][2.6623:6679]()
    "[time_series:01] Date {} not in time-series.",
    [2.6623]
    [2.6679]
    "[time_series:01:{}:{}] Date {} not in time-series.",
    code_file,
    code_line,
  • replacement in src/error.rs at line 31
    [3.2720][2.6700:6771]()
    pub fn expected_positive_duration(date1: &str, date2: &str) -> Error {
    [3.2720]
    [2.6771]
    pub fn expected_positive_duration(
    code_file: &str,
    code_line: u32,
    date1: &str,
    date2: &str) -> Error
    {
  • replacement in src/error.rs at line 38
    [2.6790][2.6790:6864]()
    "[time_series:01] Expected positive duration between {} and {}.",
    [2.6790]
    [2.6864]
    "[time_series:01:{}:{}] Expected positive duration between {} and {}.",
    code_file,
    code_line,
  • replacement in src/error.rs at line 54
    [3.2859][3.2859:2943]()
    pub fn failed_to_parse_csv_date(file: &str, line_num: usize, line: &str) -> Error {
    [3.2859]
    [3.2943]
    pub fn failed_to_parse_csv_date(
    code_file: &str,
    code_line: u32,
    file: &str,
    line_num: usize,
    line: &str) -> Error
    {
  • replacement in src/error.rs at line 62
    [3.2962][3.2962:3046]()
    "[time_series:02] Line: {} file: {}, . Failed to parse date on line [{}].",
    [3.2962]
    [3.3046]
    "[time_series:02:{}:{}] Line: {} file: {}, . Failed to parse date on line [{}].",
    code_file,
    code_line,
  • replacement in src/error.rs at line 72
    [3.3106][3.3106:3191]()
    pub fn failed_to_parse_csv_value(file: &str, line_num: usize, line: &str) -> Error {
    [3.3106]
    [3.3191]
    pub fn failed_to_parse_csv_value(
    code_file: &str,
    code_line: u32,
    file: &str,
    line_num: usize,
    line: &str) -> Error
    {
  • replacement in src/error.rs at line 80
    [3.3210][3.3210:3293]()
    "[time_series:03] Line: {} file: {}. Failed to parse value on line [{}].",
    [3.3210]
    [3.3293]
    "[time_series:03:{}:{}] Line: {} file: {}. Failed to parse value on line [{}].",
    code_file,
    code_line,
  • replacement in src/error.rs at line 89
    [3.3349][2.6908:6912](),[2.6912][3.3349:3400](),[3.3349][3.3349:3400]()
    ///
    pub fn time_series_has_only_one_point() -> Error {
    [3.3349]
    [3.3400]
    pub fn failed_to_read_file(
    code_file: &str,
    code_line: u32,
    filename: &str) -> Error
    {
    Error(format!(
    "[time_series:05:{}:{}] Failed to read file [{}].",
    code_file,
    code_line,
    filename,
    ))
    }
    pub fn time_series_has_only_one_point(
    code_file: &str,
    code_line: u32) -> Error
    {
  • replacement in src/error.rs at line 107
    [3.3419][3.3419:3479]()
    "[time_series:04] Time-series has only one point.",
    [3.3419]
    [3.3479]
    "[time_series:04:{}:{}] Time-series has only one point.",
    code_file,
    code_line,
  • replacement in src/error.rs at line 114
    [2.6917][3.3489:3530](),[3.3489][3.3489:3530]()
    pub fn time_series_is_empty() -> Error {
    [2.6917]
    [3.3530]
    pub fn time_series_is_empty(
    code_file: &str,
    code_line: u32) -> Error
    {
  • replacement in src/error.rs at line 119
    [3.3549][3.3549:3599]()
    "[time_series:05] Time-series is empty.",
    [3.3549]
    [3.3599]
    "[time_series:05:{}:{}] Time-series is empty.",
    code_file,
    code_line,
  • edit in src/error.rs at line 124
    [3.3608][3.3608:3610]()