As far as I know, the best option for this is to use serde on Vec<u8>. You can read the data into a Vec<u8> using async IO, then you can call the serde methods on the Vec<u8> to parse the data. Similarly, you can serialize values in an Vec<u8>, then write the bytes using async IO.
and we can't "pipe" the serialize_field straight into next_entry without async.
indeed we can't even switch between them at boundaries, instead having to serialize the whole Serialize before even touching the Deserialize. it's such a waste because it prevents applying ignored_any to the Serialize.