A lot of the interfaces-tweaking I've been done comes from what this PR enabled: github.com/odin-lang/Od... The interesting thing you can do is have an interface where the procs have `self` parameters that match type through a `using`. This removes lots of boilerplate casting.
github.com
Allow pointers to types which have subtype fields at offset 0 to be assignable in proc parameters. by harold-b · Pull Request #6470 · odin-lang/Odin
Allows the following case to be valid:
// Virtual interface
IFoo :: struct {
foo: proc( self: ^IFoo ),
}
// Implements IFoo interface
Foo :: struct {
using vt: IFoo,
name: string,
// .....