tailcall_valid/
lib.rs

1mod append;
2mod cause;
3mod valid;
4
5pub use cause::*;
6pub use valid::*;
7
8/// Moral equivalent of TryFrom for validation purposes
9pub trait ValidFrom<T>: Sized {
10    type Error;
11    type Trace;
12    fn valid_from(a: T) -> Valid<Self, Self::Error, Self::Trace>;
13}
14
15/// Moral equivalent of TryInto for validation purposes
16pub trait ValidInto<T> {
17    type Error;
18    type Trace;
19    fn valid_into(self) -> Valid<T, Self::Error, Self::Trace>;
20}
21
22/// A blanket implementation for ValidateInto
23impl<S, T: ValidFrom<S>> ValidInto<T> for S {
24    type Error = T::Error;
25    type Trace = T::Trace;
26    fn valid_into(self) -> Valid<T, Self::Error, Self::Trace> {
27        T::valid_from(self)
28    }
29}