Function tor_config::resolve_option
source · [−]pub fn resolve_option<T, DF>(input: &Option<Option<T>>, def: DF) -> Option<T> where
T: Clone + Default + PartialEq,
DF: FnOnce() -> Option<T>,
Expand description
Resolves an Option<Option<T>>
(in a builder) into an Option<T>
-
If the input is
None
, this indicates that the user did not specify a value, and we therefore usedef
to obtain the default value. -
If the input is
Some(None)
, orSome(Some(Default::default()))
, the user has explicitly specified that this config item should be null/none/nothing, so we returnNone
. -
Otherwise the user provided an actual value, and we return
Some
of it.
See https://gitlab.torproject.org/tpo/core/arti/-/issues/488
For consistency with other APIs in Arti, when using this,
do not pass setter(strip_option)
to derive_builder.
⚠ Stability Warning ⚠
We hope to significantly change this so that it is an method in an extension trait.
We may also make it able to support settings where the special “no such thing” value is
not T::Default
.