InCtx::icnext_*
				
					
				
			This commit is contained in:
		
							parent
							
								
									c981eee116
								
							
						
					
					
						commit
						a5a4cadef6
					
				@ -34,7 +34,15 @@ impl<D: ?Sized + Deserializer> Inlining for &mut D {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub trait InCtx<'a, Ctx: Context<'a>>: Inlining {}
 | 
					pub trait InCtx<'a, Ctx: Context<'a>>: Inlining {
 | 
				
			||||||
 | 
					    fn icnext_address<E>(self, err: impl FnOnce(&[u8]) -> E) -> Result<(Address, Self), E>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fn icnext_point<'b, A: Mentionable<'a, Ctx>, E>(
 | 
				
			||||||
 | 
					        self,
 | 
				
			||||||
 | 
					        factory: A::Fctr,
 | 
				
			||||||
 | 
					        err: impl FnOnce(&[u8]) -> E,
 | 
				
			||||||
 | 
					    ) -> Result<(Point<'a, Ctx, A>, Self), E>;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct InCtxT<'a: 'c, 'c, Ctx: Context<'a>> {
 | 
					struct InCtxT<'a: 'c, 'c, Ctx: Context<'a>> {
 | 
				
			||||||
    dectx: &'c mut dyn DeCtx<'a, Ctx>,
 | 
					    dectx: &'c mut dyn DeCtx<'a, Ctx>,
 | 
				
			||||||
@ -62,7 +70,27 @@ impl<'a: 'c, 'c, Ctx: Context<'a>> Inlining for InCtxT<'a, 'c, Ctx> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl<'a: 'c, 'c, Ctx: Context<'a>> InCtx<'a, Ctx> for InCtxT<'a, 'c, Ctx> {}
 | 
					impl<'a: 'c, 'c, Ctx: Context<'a>> InCtx<'a, Ctx> for InCtxT<'a, 'c, Ctx> {
 | 
				
			||||||
 | 
					    fn icnext_address<E>(self, err: impl FnOnce(&[u8]) -> E) -> Result<(Address, Self), E> {
 | 
				
			||||||
 | 
					        let (addresses, deserialiser, _) = self.dectx.adr();
 | 
				
			||||||
 | 
					        match deserialiser.inext_address(addresses, err) {
 | 
				
			||||||
 | 
					            Ok((address, _)) => Ok((address, self)),
 | 
				
			||||||
 | 
					            Err(e) => Err(e),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fn icnext_point<'b, A: Mentionable<'a, Ctx>, E>(
 | 
				
			||||||
 | 
					        self,
 | 
				
			||||||
 | 
					        factory: A::Fctr,
 | 
				
			||||||
 | 
					        err: impl FnOnce(&[u8]) -> E,
 | 
				
			||||||
 | 
					    ) -> Result<(Point<'a, Ctx, A>, Self), E> {
 | 
				
			||||||
 | 
					        let (point, inctx) = self.icnext_address(err)?;
 | 
				
			||||||
 | 
					        Ok((
 | 
				
			||||||
 | 
					            Point::from_address(point, factory, inctx.dectx.resolver()),
 | 
				
			||||||
 | 
					            inctx,
 | 
				
			||||||
 | 
					        ))
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub type IParseResult<'a, Ctx, F, I> =
 | 
					pub type IParseResult<'a, Ctx, F, I> =
 | 
				
			||||||
    Result<(Mtbl<'a, Ctx, F>, I), <F as Factory<'a, Ctx>>::ParseError>;
 | 
					    Result<(Mtbl<'a, Ctx, F>, I), <F as Factory<'a, Ctx>>::ParseError>;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user