#[doc(hidden)]
#[macro_export]
macro_rules! __impl_from_env_via_from_str {
($ty:ty) => {
impl $crate::FromEnv for $ty {
fn from_env(ctx: &$crate::Ctx, env: &$crate::Env) -> $crate::Result<Self> {
match env.get(&ctx.var) {
::core::option::Option::None => {
::core::result::Result::Err($crate::ConfroidError::EnvVarNotFound {
var_name: ctx.var.clone(),
field: ctx.path.clone(),
})
}
::core::option::Option::Some(raw) => {
raw.parse::<$ty>()
.map_err(|e| $crate::ConfroidError::EnvVarInvalid {
var_name: ctx.var.clone(),
field: ctx.path.clone(),
value: ::std::string::ToString::to_string(raw),
parser_error: ::std::boxed::Box::new(e),
})
}
}
}
fn is_present(ctx: &$crate::Ctx, env: &$crate::Env) -> bool {
env.get(&ctx.var).is_some()
}
}
};
}
#[cfg(not(feature = "docs"))]
#[macro_export]
macro_rules! from_str_scalar {
($($ty:ty),+ $(,)?) => {
$( $crate::__impl_from_env_via_from_str!($ty); )+
};
}
#[cfg(feature = "docs")]
#[macro_export]
macro_rules! from_str_scalar {
($($ty:ty),+ $(,)?) => {
$(
$crate::__impl_from_env_via_from_str!($ty);
impl $crate::Documented for $ty {
fn doc_fields() -> ::core::option::Option<::std::vec::Vec<$crate::FieldDoc>> {
::core::option::Option::None
}
}
)+
};
}