Struct smart_config::de::Optional
source · pub struct Optional<De, const AND_THEN: bool = false>(pub De);
Expand description
Deserializer decorator that wraps the output of the underlying decorator in Some
and returns None
if the input for the param is missing.
§Encoding nulls
For env variables, specifying null values can be tricky since natively, all env variable values are strings. There are the following was to avoid this issue:
- JSON coercion can be used to pass unambiguous JSON values (incl.
null
). - If the original deserializer doesn’t expect string values, an empty string or
"null"
will be coerced to a null. deserialize_if
attribute can help filtering out empty strings etc. for types that do expect string values.
§Transforms
The second generic param is the transform determining how the wrapped deserializer is delegated to.
Regardless of the transform, missing and null
values always result in None
; any other value, will be passed
to the wrapped deserializer.
Tuple Fields§
§0: De
Implementations§
Trait Implementations§
source§impl<T, De: DeserializeParam<T>> DeserializeParam<Option<T>> for Optional<De>
impl<T, De: DeserializeParam<T>> DeserializeParam<Option<T>> for Optional<De>
source§const EXPECTING: BasicTypes = De::EXPECTING
const EXPECTING: BasicTypes = De::EXPECTING
Describes which parameter this deserializer is expecting.
source§fn describe(&self, description: &mut TypeDescription)
fn describe(&self, description: &mut TypeDescription)
Additional info about the deserialized type, e.g., extended description.
source§fn deserialize_param(
&self,
ctx: DeserializeContext<'_>,
param: &'static ParamMetadata,
) -> Result<Option<T>, ErrorWithOrigin>
fn deserialize_param( &self, ctx: DeserializeContext<'_>, param: &'static ParamMetadata, ) -> Result<Option<T>, ErrorWithOrigin>
Performs deserialization given the context and param metadata. Read more
source§impl<T, De> DeserializeParam<Option<T>> for Optional<De, true>where
De: DeserializeParam<Option<T>>,
impl<T, De> DeserializeParam<Option<T>> for Optional<De, true>where
De: DeserializeParam<Option<T>>,
source§const EXPECTING: BasicTypes = De::EXPECTING
const EXPECTING: BasicTypes = De::EXPECTING
Describes which parameter this deserializer is expecting.
source§fn describe(&self, description: &mut TypeDescription)
fn describe(&self, description: &mut TypeDescription)
Additional info about the deserialized type, e.g., extended description.
source§fn deserialize_param(
&self,
ctx: DeserializeContext<'_>,
param: &'static ParamMetadata,
) -> Result<Option<T>, ErrorWithOrigin>
fn deserialize_param( &self, ctx: DeserializeContext<'_>, param: &'static ParamMetadata, ) -> Result<Option<T>, ErrorWithOrigin>
Performs deserialization given the context and param metadata. Read more
Auto Trait Implementations§
impl<De, const AND_THEN: bool> Freeze for Optional<De, AND_THEN>where
De: Freeze,
impl<De, const AND_THEN: bool> RefUnwindSafe for Optional<De, AND_THEN>where
De: RefUnwindSafe,
impl<De, const AND_THEN: bool> Send for Optional<De, AND_THEN>where
De: Send,
impl<De, const AND_THEN: bool> Sync for Optional<De, AND_THEN>where
De: Sync,
impl<De, const AND_THEN: bool> Unpin for Optional<De, AND_THEN>where
De: Unpin,
impl<De, const AND_THEN: bool> UnwindSafe for Optional<De, AND_THEN>where
De: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more