I can’t find any place where you can place the quota that fixes the error, so you should report this as a bug. AFAIK the goal is that most std data structures should work without the user needing to manually override the quota.
I don’t yet completely understand how the quota logic determines which scope the quota belongs to. Sometimes you can place @setEvalBranchQuota() as a regular statement in the function scope. Other times (often for types), you need to resolve the type in a block of its own, like
const FooDataStructure = comptime with_quota: {
@setEvalBranchQuota(100_000);
break :with_quota std.SomeComplexDataStructure(Foo);
};
Other times you might even need to “warm up” and resolve nested data structures used by the implementation of the main data structure in advance
comptime {
@setEvalBranchQuota(100_000);
_ = std.SomeComplexDataStructure(Foo).Indexer;
}
I tried a few variations of these but neither appear to work for your repro. Updating the implementations to @FieldType would probably be a good start, but someone should probably also audit the heavy use of std.meta which often incur enormous unnecessary overhead.