I thought about your InputRange!T example and took a look at https://dlang.org/library/std/typecons/wrap.html I quite nice solves the problem with passing structures to interfaces, though it would still be nice if this is done automatically.