struct User { a int b int } struct Foo { a int b int } fn (u User) % () { } fn (u User) - (f Foo) User { return User{u.a - f.a, u.b - f.a} } fn (mut u User) * (u1 User) User { return User{} } fn (u User) / (mut u1 User) User { return User{} } fn (u User) + (u1 User) Foo { return Foo{ a: u.a + u1.a b: u.b + u1.b } } fn main() { println(User{3, 4}) println(User{3, 4} - Foo{3, 3}) println(User{3, 2} < User{2, 4}) println(User{3, 4} < Foo{3, 4}) mut u := User{3, 4} _ = u u += 12 u %= User{1, 3} u += User{2, 3} }