Attributes
- Companion
- object
- Graph
-
- Supertypes
Members list
Type members
Inherited classlikes
Use this to create utility functions that add bindings mutably to the current module, as opposed to creating new modules and including them.
Use this to create utility functions that add bindings mutably to the current module, as opposed to creating new modules and including them.
Example:
import distage.{ClassConstructor, Tag, ModuleDef}
import izumi.distage.model.definition.dsl.ModuleDefDSL
trait RegisteredComponent
class RegisteredComponentImpl extends RegisteredComponent
def addAndRegister[T <: RegisteredComponent: Tag: ClassConstructor](implicit mutateModule: ModuleDefDSL#MutationContext): Unit = {
new mutateModule.dsl {
make[T]
many[RegisteredComponent]
.weak[T]
}
}
new ModuleDef {
addAndRegister[RegisteredComponentImpl]
}
Attributes
- Inherited from:
- AbstractBindingDefDSL
- Supertypes
-
class Objecttrait Matchableclass Any
Value members
Concrete methods
Attributes
- Definition Classes
Attributes
- Definition Classes
Inherited methods
Attributes
- Returns
-
ALL instances contained in
thislocator and in all the parent locators, including injector bootstrap environment. Returned keys may overlap if parent locators contain objects for the same key. Instances from parent locators will be earlier in the list than instances from this locator. - See also
- Inherited from:
- Locator
Like bindImplicits, but converts even fully resolved implicits into Functoid parameters.
Like bindImplicits, but converts even fully resolved implicits into Functoid parameters.
This may not be what you want, because this will also capture global utility implicits such as DummyImplicit, ClassTag and scala.collection.Factory, and turn them into DI parameters.
Attributes
- Inherited from:
- FunctoidBindImplicitsVersionSpecific
Convert unresolved implicits in the following code block, lambda or a method reference into explicit parameters that will be resolved from the object graph, not the implicit context.
Convert unresolved implicits in the following code block, lambda or a method reference into explicit parameters that will be resolved from the object graph, not the implicit context.
Example:
final case class X(a: Int, b: Double)
// LAMBDA:
make[X].from(bindImplicits {
(i: Int) => X(i, implicitly[Double])
}
// transforms into:
make[X].from {
(i: Int, d: Double) => X(i, d)
}
// CODE BLOCK:
make[X].from(bindImplicits {
X(implicitly[Int], implicitly[Double])
})
// transforms into:
make[X].from {
(i: Int, d: Double) => X(i, d)
}
// METHOD REFERENCE:
def createX(i: Int)(implicit d: Double, dx: DummyImplicit): X = X(i, d)
make[X].from(bindImplicits {
createX
})
// transforms into:
make[X].from {
(i: Int, d: Double) => createX(i)(using d, DummyImplicit.dummyImplicit)
}
// because search for DummyImplicit was __resolved__ in current implicit scope, it was taken from the implicit context,
// not from the object graph!
Attributes
- Note
-
This function is available inside ModuleDef DSL, but it can also be called outside of it as Functoid.bindImplicits
- Inherited from:
- FunctoidBindImplicitsVersionSpecific
Attributes
- Definition Classes
- Inherited from:
- AbstractLocator
Attributes
- Definition Classes
- Inherited from:
- AbstractLocator
Attributes
- Throws
-
MissingInstanceException
if
T @Id(id)is missing - Definition Classes
- Inherited from:
- AbstractLocator
Attributes
- Throws
-
MissingInstanceException
if
Tis missing - Definition Classes
- Inherited from:
- AbstractLocator
Attributes
- Definition Classes
- Inherited from:
- AbstractLocator
Attributes
- Definition Classes
- Inherited from:
- AbstractLocator
Attributes
- Definition Classes
- Inherited from:
- AbstractLocator
Attributes
- Definition Classes
- Inherited from:
- AbstractLocator
Attributes
- Inherited from:
- AbstractBindingDefDSLMacro
Attributes
- Inherited from:
- Locator
Run function filling all the arguments from the object graph.
Run function filling all the arguments from the object graph.
Works similarly to function bindings in izumi.distage.model.definition.ModuleDef.
objects.run {
(hellower: Hellower, bye: Byer) =>
hellower.hello()
byer.bye()
}
Attributes
- See also
- Inherited from:
- Locator