jiff/error/tz/
ambiguous.rs1use crate::{
2 error,
3 tz::{Offset, TimeZone},
4};
5
6#[derive(Clone, Debug)]
7pub(crate) enum Error {
8 BecauseFold { before: Offset, after: Offset },
9 BecauseGap { before: Offset, after: Offset },
10 InTimeZone { tz: TimeZone },
11}
12
13impl From<Error> for error::Error {
14 #[cold]
15 #[inline(never)]
16 fn from(err: Error) -> error::Error {
17 error::ErrorKind::TzAmbiguous(err).into()
18 }
19}
20
21impl error::IntoError for Error {
22 fn into_error(self) -> error::Error {
23 self.into()
24 }
25}
26
27impl core::fmt::Display for Error {
28 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
29 use self::Error::*;
30
31 match *self {
32 BecauseFold { before, after } => write!(
33 f,
34 "datetime is ambiguous since it falls into a \
35 fold between offsets {before} and {after}",
36 ),
37 BecauseGap { before, after } => write!(
38 f,
39 "datetime is ambiguous since it falls into a \
40 gap between offsets {before} and {after}",
41 ),
42 InTimeZone { ref tz } => write!(
43 f,
44 "error converting datetime to instant in time zone {tz}",
45 tz = tz.diagnostic_name(),
46 ),
47 }
48 }
49}