#[cfg(target_os = "linux")]
mod tz_linux;
#[cfg(target_os = "linux")]
use tz_linux as platform;
#[cfg(target_os = "windows")]
mod tz_windows;
#[cfg(target_os = "windows")]
use tz_windows as platform;
#[cfg(target_os = "macos")]
mod tz_macos;
#[cfg(target_os = "macos")]
use tz_macos as platform;
#[cfg(target_arch = "wasm32")]
mod tz_wasm32;
#[cfg(target_arch = "wasm32")]
use tz_wasm32 as platform;
#[derive(Debug)]
pub enum GetTimezoneError {
FailedParsingString,
IoError(std::io::Error),
OsError,
}
impl std::error::Error for GetTimezoneError {}
impl std::fmt::Display for GetTimezoneError {
fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> {
use GetTimezoneError::*;
let descr = match self {
FailedParsingString => "GetTimezoneError::FailedParsingString",
IoError(_) => "GetTimezoneError::IoError(_)",
OsError => "OsError",
};
write!(f, "{}", descr)
}
}
impl std::convert::From<std::io::Error> for GetTimezoneError {
fn from(orig: std::io::Error) -> Self {
GetTimezoneError::IoError(orig)
}
}
pub fn get_timezone() -> std::result::Result<String, crate::GetTimezoneError> {
platform::get_timezone_inner()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn get_current() {
println!("current: {}", get_timezone().unwrap());
}
}