interface Something { i int } struct Some { i int } struct App[M] { f M } fn (mut self App[M]) next[M, T](_input T) f64 { $if M is Something { return 0 } $else { panic('${typeof(M.typ).name} is not supported') return 1 } return 1 } fn main() { mut app := App[Some]{ f: Some{ i: 10 } } assert app.next(1) == 0 println(app.next(1)) }