diff --git a/src/rcore/addresses.rs b/src/rcore/addresses.rs index 4b98e36..605592c 100644 --- a/src/rcore/addresses.rs +++ b/src/rcore/addresses.rs @@ -40,6 +40,24 @@ impl Addresses { } } +pub trait InliningAddresses: Inlining { + fn inext_address( + self, + addresses: &mut Addresses, + err: impl FnOnce(&[u8]) -> E, + ) -> Result<(Address, Self), E> { + let (point, deserializer) = self.iread_n_const::(err)?; + let address = Address { + point, + index: addresses.current, + }; + addresses.current += 1; + Ok((address, deserializer)) + } +} + +impl InliningAddresses for D {} + fn _parse_slice<'a, Ctx: Context<'a>, A: Mentionable<'a, Ctx>>( factory: &A::Fctr, slice: &[u8],