Note that there's no need for structural records for that. It would work with existing nominal records with two things:
- A way to create a struct literal of inferred type, perhaps
foo(.{ bar: 5, baz: true }) - Sugar to create an anonymous type in a function definition, like
fn foo(.{ bar: i32, baz: bool})
Then you don't have to change the type system at all, which makes the whole thing massively easier to deal with.