rocketraman
fun DI.Builder.bindFoo() = bind<Foo>().inSet()
bindFoo() with singleton { ... }
inSet
fun DI.Builder.bindFoo(binding: () -> DIBinding<*, *, out Foo>) = inBindSet { add(binding) }
DIBinding
typealias DITypeBinding<T> = () -> DIBinding<*, *, out T>
fun DI.Builder.bindFoo(binding: DITypeBinding<Foo>) = inBindSet { add(binding) }
A modern programming language that makes developers happier.