)]}'
{
  "commit": "eb29aa6a92ff38818873c89f08c704037f6a4bf2",
  "tree": "56b78dc68cca8ff0379c433e1e70c2f12f416c95",
  "parents": [
    "a0a8dac780d1e46224045ae2ddc9d81e1def83ca"
  ],
  "author": {
    "name": "Marcin Kowalczyk",
    "email": "qrczak@google.com",
    "time": "Thu Apr 16 11:45:02 2026 +0200"
  },
  "committer": {
    "name": "Marcin Kowalczyk",
    "email": "qrczak@google.com",
    "time": "Fri Apr 17 11:49:51 2026 +0200"
  },
  "message": "Make `riegeli::Reset(dest, args...)` an effective optimization of\n`dest \u003d T(args...)` for more types and patterns:\n\n* `riegeli::Reset(dest, std::in_place, args...)` → `dest.emplace(args...)`\n* `riegeli::Reset(dest, std::in_place_type\u003cType\u003e, args...)` →\n  `dest.emplace\u003cType\u003e(args...)`\n* `riegeli::Reset(dest, std::in_place_index\u003cindex\u003e, args...)` →\n  `dest.emplace\u003cindex\u003e(args...)`\n* `riegeli::Reset(dest)` → `dest.clear()` (`begin()` and `end()` must be\n  defined because this pattern would be risky for non-containers)\n* `riegeli::Reset(dest, args...)` → `dest.assign(args...)`\n  (`begin()` and `end()` must be defined)\n\nThis covers in particular `std::optional`, `std::variant`, `std::any`,\n`absl::InlinedVector`...\n\nDescribe some caveats when resetting may differ from assignment from a newly\nconstructed object.\n\nRemove overrides of `RiegeliReset()` which became redundant.\n\nPiperOrigin-RevId: 900610370\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b220016edb4f09902444da9262076bbdea7a0070",
      "old_mode": 33188,
      "old_path": "riegeli/base/BUILD",
      "new_id": "5be6bb44349265df900f646683d3c3170652c8e2",
      "new_mode": 33188,
      "new_path": "riegeli/base/BUILD"
    },
    {
      "type": "modify",
      "old_id": "896c3802b35c6e7de2d9e055e6287aa28dcbe459",
      "old_mode": 33188,
      "old_path": "riegeli/base/reset.h",
      "new_id": "a4ef271e02531c4529e1e55a99458b3ca60d8279",
      "new_mode": 33188,
      "new_path": "riegeli/base/reset.h"
    }
  ]
}
