Diffstat (limited to 'src/transform.rs')
| -rw-r--r-- | src/transform.rs | 98 |
1 files changed, 49 insertions, 49 deletions
diff --git a/src/transform.rs b/src/transform.rs index cd46681..bb2efcf 100644 --- a/src/transform.rs +++ b/src/transform.rs @@ -4,83 +4,83 @@ use crate::{ UniError, Walker, }; -pub fn from<'value, 'ctx: 'value, U, T, VisitorErr>( +pub fn from<'value, 'ctx, U, T>( value: T, -) -> Result<U, UniError<<T as WalkOnce<'value, 'ctx, VisitorErr>>::ErrorOnce, VisitorErr>> +) -> Result<U, UniError<<T as WalkOnce<'value, 'ctx>>::Error, <U as Build<'value, 'ctx>>::Error>> where - U: Build< - 'value, - 'ctx, - <T as WalkOnce<'value, 'ctx, VisitorErr>>::ErrorOnce, - Error = VisitorErr, - >, - T: WalkOnce<'value, 'ctx, VisitorErr>, + U: Build<'value, 'ctx>, + <U as Build<'value, 'ctx>>::Error: 'value, + T: WalkOnce<'value, 'ctx>, + <T as WalkOnce<'value, 'ctx>>::Error: 'value, { - build_from::<U::Builder, _, _>(value) + build_from::<U::Builder, _>(value) } -pub fn from_mut<'value, 'ctx, U, T, VisitorErr>( - value: &'value mut T, -) -> Result<U, UniError<<T as WalkMut<'value, 'ctx, VisitorErr>>::ErrorMut, VisitorErr>> +pub fn from_mut<'borrow, 'value, 'ctx, U, T: ?Sized>( + value: &'borrow mut T, +) -> Result< + U, + UniError<<T as WalkMut<'value, 'borrow, 'ctx>>::Error, <U as Build<'value, 'ctx>>::Error>, +> where - U: Build<'value, 'ctx, <T as WalkMut<'value, 'ctx, VisitorErr>>::ErrorMut, Error = VisitorErr>, - T: WalkMut<'value, 'ctx, VisitorErr>, + U: Build<'value, 'ctx>, + <U as Build<'value, 'ctx>>::Error: 'value, + T: WalkMut<'value, 'borrow, 'ctx>, + <T as WalkMut<'value, 'borrow, 'ctx>>::Error: 'value, { - build_from_mut::<U::Builder, _, _>(value) + build_from_mut::<U::Builder, _>(value) } -pub fn from_ref<'value, 'ctx: 'value, U, T: ?Sized, VisitorErr>( - value: &'value T, -) -> Result<U, UniError<<T as Walk<'value, 'value, 'ctx, VisitorErr>>::Error, VisitorErr>> +pub fn from_ref<'borrow, 'value, 'ctx, U, T: ?Sized>( + value: &'borrow T, +) -> Result<U, UniError<<T as Walk<'value, 'borrow, 'ctx>>::Error, <U as Build<'value, 'ctx>>::Error>> where - U: Build<'value, 'ctx, <T as Walk<'value, 'value, 'ctx, VisitorErr>>::Error, Error = VisitorErr>, - T: Walk<'value, 'value, 'ctx, VisitorErr>, + U: Build<'value, 'ctx>, + <U as Build<'value, 'ctx>>::Error: 'value, + T: Walk<'value, 'borrow, 'ctx>, + <T as Walk<'value, 'borrow, 'ctx>>::Error: 'value, { - build_from_ref::<U::Builder, _, _>(value) + build_from_ref::<U::Builder, _>(value) } -pub fn build_from<'value, 'ctx: 'value, B, T, VisitorErr>( +pub fn build_from<'value, 'ctx, B, T>( value: T, -) -> Result<B::Value, UniError<<T as WalkOnce<'value, 'ctx, VisitorErr>>::ErrorOnce, VisitorErr>> +) -> Result<B::Value, UniError<<T as WalkOnce<'value, 'ctx>>::Error, B::Error>> where - B: Builder< - 'value, - 'ctx, - <T as WalkOnce<'value, 'ctx, VisitorErr>>::ErrorOnce, - Error = VisitorErr, - >, - T: WalkOnce<'value, 'ctx, VisitorErr>, + B: Builder<'value, 'ctx>, + <B as Builder<'value, 'ctx>>::Error: 'value, + T: WalkOnce<'value, 'ctx>, + <T as WalkOnce<'value, 'ctx>>::Error: 'value, { let mut builder = B::init(); value.into_walker().walk(builder.as_visitor())?; - builder.finish() + builder.finish().map_err(UniError::Visitor) } -pub fn build_from_mut<'value, 'ctx: 'value, B, T, VisitorErr>( - value: &'value mut T, -) -> Result<B::Value, UniError<<T as WalkMut<'value, 'ctx, VisitorErr>>::ErrorMut, VisitorErr>> +pub fn build_from_mut<'borrow, 'value, 'ctx, B, T: ?Sized>( + value: &'borrow mut T, +) -> Result<B::Value, UniError<<T as WalkMut<'value, 'borrow, 'ctx>>::Error, B::Error>> where - B: Builder< - 'value, - 'ctx, - <T as WalkMut<'value, 'ctx, VisitorErr>>::ErrorMut, - Error = VisitorErr, - >, - T: WalkMut<'value, 'ctx, VisitorErr>, + B: Builder<'value, 'ctx>, + <B as Builder<'value, 'ctx>>::Error: 'value, + T: WalkMut<'value, 'borrow, 'ctx>, + <T as WalkMut<'value, 'borrow, 'ctx>>::Error: 'value, { let mut builder = B::init(); value.walker_mut().walk(builder.as_visitor())?; - builder.finish() + builder.finish().map_err(UniError::Visitor) } -pub fn build_from_ref<'value, 'ctx: 'value, B, T: ?Sized, VisitorErr>( - value: &'value T, -) -> Result<B::Value, UniError<<T as Walk<'value, 'value, 'ctx, VisitorErr>>::Error, VisitorErr>> +pub fn build_from_ref<'borrow, 'value, 'ctx, B, T: ?Sized>( + value: &'borrow T, +) -> Result<B::Value, UniError<<T as Walk<'value, 'borrow, 'ctx>>::Error, B::Error>> where - B: Builder<'value, 'ctx, <T as Walk<'value, 'value, 'ctx, VisitorErr>>::Error, Error = VisitorErr>, - T: Walk<'value, 'value, 'ctx, VisitorErr>, + B: Builder<'value, 'ctx>, + <B as Builder<'value, 'ctx>>::Error: 'value, + T: Walk<'value, 'borrow, 'ctx>, + <T as Walk<'value, 'borrow, 'ctx>>::Error: 'value, { let mut builder = B::init(); value.walker().walk(builder.as_visitor())?; - builder.finish() + builder.finish().map_err(UniError::Visitor) } |