use ambient_authority::AmbientAuthority; use iana_time_zone::get_timezone; /// A reference to a timezone resource. pub struct Timezone(()); /// An error type returned by `Timezone::timezone_name`. #[derive(Debug)] pub struct TimezoneError(String); impl std::error::Error for TimezoneError {} impl std::fmt::Display for TimezoneError { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { self.0.fmt(f) } } impl Timezone { /// Constructs a new instance of `Self`. /// /// # Ambient Authority /// /// This uses ambient authority to accesses clocks. #[inline] pub const fn new(ambient_authority: AmbientAuthority) -> Self { let _ = ambient_authority; Self(()) } /// Returns the combined date and time with timezone. /// /// Converts NaiveTime to DateTime #[inline] pub fn timezone_name(&self) -> Result { get_timezone().map_err(|e| TimezoneError(e.to_string())) } }