Resolve

Trait Resolve 

Source
pub trait Resolve<ResolvedT, AnnotatedT>: Sized {
    // Required method
    fn resolve_with_errors<ErrorReceiverT>(
        self,
        errors: &mut ErrorReceiverT,
    ) -> ResolveResult<ResolvedT, AnnotatedT>
       where ErrorReceiverT: ErrorReceiver<ResolveError<AnnotatedT>>;

    // Provided method
    fn resolve(self) -> Result<ResolvedT, ResolveError<AnnotatedT>> { ... }
}
Expand description

Resolve one type into another.

Required Methods§

Source

fn resolve_with_errors<ErrorReceiverT>( self, errors: &mut ErrorReceiverT, ) -> ResolveResult<ResolvedT, AnnotatedT>
where ErrorReceiverT: ErrorReceiver<ResolveError<AnnotatedT>>,

Resolve one type into another.

A lot like TryFrom, except that we can accumulate potentially annotated errors.

Errors can be reported as usual by Err but also by the ErrorReceiver. Callers should thus check that errors is empty even when the function returns Ok.

The function may return Some partially resolved result even if there are errors.

Provided Methods§

Source

fn resolve(self) -> Result<ResolvedT, ResolveError<AnnotatedT>>

Resolve one type into another.

A lot like TryFrom, except that we can accumulate potentially annotated errors.

Unlike resolve will fail on the first encountered error and will return ResolveError::Missing instead of None.

If you want all the errors use resolve instead.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<FirstT, SecondT, AnnotatedT> Resolve<(FirstT, SecondT), AnnotatedT> for (Variant<AnnotatedT>, Variant<AnnotatedT>)
where Variant<AnnotatedT>: Resolve<FirstT, AnnotatedT> + Resolve<SecondT, AnnotatedT>,

Source§

fn resolve_with_errors<ErrorReceiverT>( self, errors: &mut ErrorReceiverT, ) -> ResolveResult<(FirstT, SecondT), AnnotatedT>
where ErrorReceiverT: ErrorReceiver<ResolveError<AnnotatedT>>,

Implementors§

Source§

impl<AnnotatedT> Resolve<IpAddr, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<SocketAddr, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<bool, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<f32, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<f64, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<i8, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<i16, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<i32, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<i64, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<isize, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<u8, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<u16, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<u32, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<u64, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<usize, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<String, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<Ipv4Addr, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<Ipv6Addr, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<SocketAddrV4, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<SocketAddrV6, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<PathBuf, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<Bytes, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<AnnotatedT> Resolve<ByteString, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Clone + Default,

Source§

impl<BoxedT, AnnotatedT> Resolve<Box<BoxedT>, AnnotatedT> for Variant<AnnotatedT>
where Variant<AnnotatedT>: Resolve<BoxedT, AnnotatedT>,

Source§

impl<InnerT, AnnotatedT> Resolve<Annotate<InnerT, AnnotatedT>, AnnotatedT> for Variant<AnnotatedT>
where AnnotatedT: Annotated + Default, Variant<AnnotatedT>: Resolve<InnerT, AnnotatedT>,

Source§

impl<InnerT, AnnotatedT> Resolve<ResolveFromStr<InnerT>, AnnotatedT> for Variant<AnnotatedT>
where InnerT: FromStr, InnerT::Err: Display, AnnotatedT: Annotated + Clone + Default,

Source§

impl<InnerT, IntermediateT, AnnotatedT> Resolve<ResolveTryFrom<InnerT, IntermediateT>, AnnotatedT> for Variant<AnnotatedT>
where Variant<AnnotatedT>: TryInto<IntermediateT>, <Variant<AnnotatedT> as TryInto<IntermediateT>>::Error: Display, InnerT: TryFrom<IntermediateT>, InnerT::Error: Display, AnnotatedT: Annotated + Clone + Default,

Source§

impl<InnerT, ParseStrT, AnnotatedT> Resolve<ResolveParseStr<InnerT, ParseStrT>, AnnotatedT> for Variant<AnnotatedT>
where ParseStrT: ParseStr<InnerT>, AnnotatedT: Annotated + Clone + Default,

Source§

impl<ItemT, AnnotatedT> Resolve<LinkedList<ItemT>, AnnotatedT> for Variant<AnnotatedT>
where Variant<AnnotatedT>: Resolve<ItemT, AnnotatedT>, AnnotatedT: Annotated + Clone + Default,

Source§

impl<ItemT, AnnotatedT> Resolve<VecDeque<ItemT>, AnnotatedT> for Variant<AnnotatedT>
where Variant<AnnotatedT>: Resolve<ItemT, AnnotatedT>, AnnotatedT: Annotated + Clone + Default,

Source§

impl<ItemT, AnnotatedT> Resolve<Vec<ItemT>, AnnotatedT> for Variant<AnnotatedT>
where Variant<AnnotatedT>: Resolve<ItemT, AnnotatedT>, AnnotatedT: Annotated + Clone + Default,

Source§

impl<KeyT, ValueT, AnnotatedT> Resolve<BTreeMap<KeyT, ValueT>, AnnotatedT> for Variant<AnnotatedT>
where KeyT: Hash + Eq + Ord, Variant<AnnotatedT>: Resolve<KeyT, AnnotatedT> + Resolve<ValueT, AnnotatedT>, AnnotatedT: Annotated + Clone + Default,

Source§

impl<KeyT, ValueT, BuildHasherT, AnnotatedT> Resolve<HashMap<KeyT, ValueT, BuildHasherT>, AnnotatedT> for Variant<AnnotatedT>
where KeyT: Hash + Eq, Variant<AnnotatedT>: Resolve<KeyT, AnnotatedT> + Resolve<ValueT, AnnotatedT>, AnnotatedT: 'static + Annotated + Clone + Default, BuildHasherT: BuildHasher + Default,

Source§

impl<OptionalT, AnnotatedT> Resolve<Option<OptionalT>, AnnotatedT> for Variant<AnnotatedT>
where Variant<AnnotatedT>: Resolve<OptionalT, AnnotatedT>,

Source§

impl<ResolvedAnnotationsT, AnnotatedT> Resolve<Variant<ResolvedAnnotationsT>, AnnotatedT> for Variant<AnnotatedT>
where ResolvedAnnotationsT: Annotated + Default, AnnotatedT: Annotated + Clone,