Part of #193. Low-severity public-API findings from the surface review, tracked so nothing is dropped. Each is a checkbox — split into its own issue if it grows.
(Read/write V1/V2 selection asymmetry + from_sigers rename + owned-Bytes model → tracked in #210.)
Part of #193. Low-severity public-API findings from the surface review, tracked so nothing is dropped. Each is a checkbox — split into its own issue if it grows.
ParseError::UnknownMatterCode(String)/UnknownCounterCode(String)(error.rs:24,28) carry the code asString; defensible (genuinely-unknown bytes) butBox<str>/ArrayStringavoids an alloc on the reject path. Fold into the cesr-stream: replace ParseError::Malformed(String) sink with typed #[from] source union (#193) #208 error rework.qb2module-name repetition + owned returns (qb2.rs:24,55) —qb2::qb2_to_qb64repeats the module name (→ considerqb2::to_text/from_text); both return ownedVec<u8>. A&mut Vec/writer variant lets callers reuse buffers on hot paths.encode_count/encode_count_autoheap-alloc per counter (encode.rs:65,79) — returnVec<u8>for a ≤8-byte counter;SmallVec/ArrayVecor write-into-buffer avoids the alloc.Decoder/Encoderpartial-frame semantics undocumented (codec.rs:290-314) — theOk(None)incomplete-frame behavior and V1/V2TypeIddispatch are only implied; add a note onCesrCodecfor async users.Cesrprefix onCesrGroup/CesrMessage/CesrEncode/CesrCodecunder the crate path (cesr_stream::CesrGroup) — acceptable convention, but worth a deliberate workspace split phase 2: per-crate redesign & tightening (OWNER-DRIVEN — Joel hands-on) #193 call.Group<K>::iter/into_vecsurfaceSiger/Cigar/Diger/Saider/Prefixer/Verfer/Verser/Noncer(group/kinds.rs:145-597); origin iscesr::core::primitives(fix belongs there) but they're observable in this crate's API.QuadletGroup::unwrap_genericeagerVec(unwrap.rs:31) — diverges from the lazy-iterator idiom (Group::iter,Frame: IntoIterator); the whole one-implunwrapmodule could fold intogroup.groupre-exports all 29 kind aliases (group/mod.rs:39-67); the headline-at-root vs module-only split looks unprincipled.(Read/write V1/V2 selection asymmetry +
from_sigersrename + owned-Bytesmodel → tracked in #210.)