1mod append;
2mod cause;
3mod valid;
4
5pub use cause::*;
6pub use valid::*;
7
8pub trait ValidFrom<T>: Sized {
10 type Error;
11 type Trace;
12 fn valid_from(a: T) -> Valid<Self, Self::Error, Self::Trace>;
13}
14
15pub trait ValidInto<T> {
17 type Error;
18 type Trace;
19 fn valid_into(self) -> Valid<T, Self::Error, Self::Trace>;
20}
21
22impl<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}