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_ifattribute 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: DeImplementations§
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