pub fn cast(this: @This(), c: *const Configuration, comptime S: type) ?S this: @This()c: *const ConfigurationS: type2608
2609
2610
2611
2612
2613
2614
2615
2616
2617 pub fn cast(this: @This(), c: *const Configuration, comptime S: type) ?S {
const wanted_tag = blk: {
const info = @typeInfo(S.Flags).@"struct";
break :blk info.field_attrs[0].defaultValue(info.field_types[0]).?;
};
const base_flags: BaseFlags = @bitCast(c.extra[@backingInt(this)]);
if (base_flags.tag != wanted_tag) return null;
var i: usize = @backingInt(this);
return data(c.extra, &i, S);
}