Make `riegeli::Reset(dest, args...)` an effective optimization of `dest = T(args...)` for more types and patterns: * `riegeli::Reset(dest, std::in_place, args...)` → `dest.emplace(args...)` * `riegeli::Reset(dest, std::in_place_type<Type>, args...)` → `dest.emplace<Type>(args...)` * `riegeli::Reset(dest, std::in_place_index<index>, args...)` → `dest.emplace<index>(args...)` * `riegeli::Reset(dest)` → `dest.clear()` (`begin()` and `end()` must be defined because this pattern would be risky for non-containers) * `riegeli::Reset(dest, args...)` → `dest.assign(args...)` (`begin()` and `end()` must be defined) This covers in particular `std::optional`, `std::variant`, `std::any`, `absl::InlinedVector`... Describe some caveats when resetting may differ from assignment from a newly constructed object. Remove overrides of `RiegeliReset()` which became redundant. PiperOrigin-RevId: 900610370
Riegeli/records is a file format for storing a sequence of string records, typically serialized protocol buffers. It supports dense compression, fast decoding, seeking, detection and optional skipping of data corruption, filtering of proto message fields for even faster decoding, and parallel encoding.
See documentation.
Riegeli file format will only change in a backward compatible way (i.e. future readers will understand current files, but current readers might not understand files using future features).
Riegeli C++ API might change in incompatible ways.