#[deny(rust_2018_idioms)]
#[cfg(target_os = "linux")]
mod linux;
#[cfg(target_os = "linux")]
use linux as platform;
#[cfg(target_os = "windows")]
mod windows;
#[cfg(target_os = "windows")]
use windows as platform;
#[cfg(target_os = "macos")]
mod macos;
#[cfg(target_os = "macos")]
use macos 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());
}
}