mirror of
https://codeberg.org/unspeaker/tengri.git
synced 2025-12-08 12:46:44 +01:00
This commit is contained in:
parent
b52c1f5828
commit
24ac52d807
10 changed files with 238 additions and 203 deletions
|
|
@ -12,24 +12,24 @@ pub trait FromDsl<T>: Sized {
|
|||
}
|
||||
|
||||
/// `self` + [Dsl] -> `T`
|
||||
pub trait DslInto<'s, T> {
|
||||
fn dsl_into (&'s self, dsl: &impl Dsl) -> Perhaps<T>;
|
||||
fn dsl_into_or (&'s self, dsl: &impl Dsl, err: Box<dyn Error>) -> Usually<T> {
|
||||
pub trait DslInto<T> {
|
||||
fn dsl_into (&self, dsl: &impl Dsl) -> Perhaps<T>;
|
||||
fn dsl_into_or (&self, dsl: &impl Dsl, err: Box<dyn Error>) -> Usually<T> {
|
||||
self.dsl_into(dsl)?.ok_or(err)
|
||||
}
|
||||
fn dsl_into_or_else (&'s self, dsl: &impl Dsl, err: impl Fn()->Box<dyn Error>) -> Usually<T> {
|
||||
fn dsl_into_or_else (&self, dsl: &impl Dsl, err: impl Fn()->Box<dyn Error>) -> Usually<T> {
|
||||
self.dsl_into(dsl)?.ok_or_else(err)
|
||||
}
|
||||
}
|
||||
|
||||
/// `self` + `T` -> [Dsl]
|
||||
pub trait DslFrom<T> {
|
||||
fn dsl_from (&self, dsl: &T) -> Perhaps<impl Dsl>;
|
||||
fn dsl_from_or (&self, dsl: &T, err: Box<dyn Error>) -> Usually<impl Dsl> {
|
||||
self.dsl_from(dsl)?.ok_or(err)
|
||||
fn dsl_from (&self, val: &T) -> Perhaps<impl Dsl>;
|
||||
fn dsl_from_or (&self, val: &T, err: Box<dyn Error>) -> Usually<impl Dsl> {
|
||||
self.dsl_from(val)?.ok_or(err)
|
||||
}
|
||||
fn dsl_from_or_else (&self, dsl: &T, err: impl Fn()->Box<dyn Error>) -> Usually<impl Dsl> {
|
||||
self.dsl_from(dsl)?.ok_or_else(err)
|
||||
fn dsl_from_or_else (&self, val: &T, err: impl Fn()->Box<dyn Error>) -> Usually<impl Dsl> {
|
||||
self.dsl_from(val)?.ok_or_else(err)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -44,14 +44,14 @@ pub trait IntoDsl<T> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<'s, T: FromDsl<U>, U> DslInto<'s, T> for U {
|
||||
fn dsl_into (&self, dsl: &impl Dsl) -> Perhaps<T> {
|
||||
T::from_dsl(self, dsl)
|
||||
}
|
||||
}
|
||||
//impl<'s, T: FromDsl<U>, U> DslInto<'s, T> for U {
|
||||
//fn dsl_into (&self, dsl: &impl Dsl) -> Perhaps<T> {
|
||||
//T::from_dsl(self, dsl)
|
||||
//}
|
||||
//}
|
||||
|
||||
impl<T: DslFrom<U>, U> IntoDsl<T> for U {
|
||||
fn into_dsl (&self, state: &T) -> Perhaps<impl Dsl> {
|
||||
T::dsl_from(state, self)
|
||||
}
|
||||
}
|
||||
//impl<T: DslFrom<U>, U> IntoDsl<T> for U {
|
||||
//fn into_dsl (&self, state: &T) -> Perhaps<impl Dsl> {
|
||||
//T::dsl_from(state, self)
|
||||
//}
|
||||
//}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue