Resolve

Trait Resolve 

Source
pub trait Resolve<ResolvedT, AnnotatedT>: Sized {
    // Required method
    fn resolve_with_errors<ErrorRecipientT>(
        self,
        errors: &mut ErrorRecipientT,
    ) -> ResolveResult<ResolvedT, AnnotatedT>
       where ErrorRecipientT: ErrorRecipient<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<ErrorRecipientT>( self, errors: &mut ErrorRecipientT, ) -> ResolveResult<ResolvedT, AnnotatedT>
where ErrorRecipientT: ErrorRecipient<ResolveError<AnnotatedT>>,

Resolve one type into another.

Errors can be reported as usual by Err but also by the ErrorRecipient. 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.

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<ErrorRecipientT>( self, errors: &mut ErrorRecipientT, ) -> ResolveResult<(FirstT, SecondT), AnnotatedT>
where ErrorRecipientT: ErrorRecipient<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,