1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use crate::{InvalidLogFormat, LogFormat, LogFormatFromEnvError, LogFormatFromEnvWithDefaultError};
use std::env;
pub fn log_format_from_env(key: &str) -> Result<LogFormat, LogFormatFromEnvError> {
match env::var(key) {
Ok(val) => match val.parse() {
Ok(format) => Ok(format),
Err(_err @ InvalidLogFormat) => Err(LogFormatFromEnvError::InvalidFormat(val)),
},
Err(env::VarError::NotPresent) => Err(LogFormatFromEnvError::NotPresent),
Err(env::VarError::NotUnicode(val)) => Err(LogFormatFromEnvError::NotUnicode(val)),
}
}
pub fn log_format_from_env_with_default(
key: &str,
default: LogFormat,
) -> Result<LogFormat, LogFormatFromEnvWithDefaultError> {
match log_format_from_env(key) {
Ok(val) => Ok(val),
Err(LogFormatFromEnvError::NotPresent) => Ok(default),
Err(LogFormatFromEnvError::NotUnicode(val)) => {
Err(LogFormatFromEnvWithDefaultError::NotUnicode(val))
}
Err(LogFormatFromEnvError::InvalidFormat(val)) => {
Err(LogFormatFromEnvWithDefaultError::InvalidFormat(val))
}
}
}