pub fn back_to_the_buffer<W: BackToTheBuffer, Tmp, Gen, Before>(
    reserved: usize,
    gen: Gen,
    before: Before
) -> impl SerializeFn<W>
where Gen: Fn(WriteContext<W>) -> Result<(WriteContext<W>, Tmp), GenError>, Before: Fn(WriteContext<W>, Tmp) -> GenResult<W>,
Expand description

Reserves space for the Before combinator, applies the Gen combinator, then applies the Before combinator with the output from Gen onto the reserved space.

use cookie_factory::{gen, gen_simple, sequence::tuple, combinator::{back_to_the_buffer, string}, bytes::be_u8, bytes::be_u32};

let mut buf = [0; 9];
gen_simple(tuple((
    back_to_the_buffer(
        4,
        move |buf| gen(string("test"), buf),
        move |buf, len| gen_simple(be_u32(len as u32), buf)
    ),
    be_u8(42)
)), &mut buf[..]).unwrap();
assert_eq!(&buf, &[0, 0, 0, 4, 't' as u8, 'e' as u8, 's' as u8, 't' as u8, 42]);