module main

struct Db {}
struct User {}
struct Post {}

fn main() {
	r := Db{}
	u := User{}
	p := Post{}

	r.create1(u, p)
	r.create2(u, &p)
	r.create3(u, [p])
	r.create4(u)
	r.create5(u)
}

fn (r Db) create1[U](u U, p P) {
	println('Yo')
}

fn (r Db) create2[U](u U, p &P) {
	println('Yo')
}

fn (r Db) create3[U](u U, p []P) {
	println('Yo')
}

fn (r Db) create4[U](u U) P {
	return P{}
}

fn (r Db) create5[U](u U) []P {
	return [P{}]
}
