Packages

final class MakeDSL[T] extends MakeDSLMutBase[T, MakeDSL[T]] with MakeDSLBase[T, MakeDSLUnnamedAfterFrom[T]]

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. MakeDSL
  2. MakeDSLBase
  3. MakeDSLMutBase
  4. Tagging
  5. AddDependencyDSL
  6. AnyRef
  7. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new MakeDSL(mutableState: SingletonRef, key: TypeKey)

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. def _addDependencies(keys: Iterable[DIKey]): MakeDSL[T]
    Attributes
    protected
    Definition Classes
    MakeDSLMutBaseAddDependencyDSL
  5. def _modifyBy(f: (Functoid[T]) => Functoid[T]): MakeDSL[T]
    Attributes
    protected
    Definition Classes
    MakeDSLMutBaseAddDependencyDSL
  6. final def addDependencies(keys: Iterable[DIKey]): MakeDSL[T]
    Definition Classes
    AddDependencyDSL
  7. final def addDependency(key: DIKey): MakeDSL[T]
    Definition Classes
    AddDependencyDSL
  8. final def addDependency[B](name: Identifier)(implicit arg0: Tag[B]): MakeDSL[T]
    Definition Classes
    AddDependencyDSL
  9. final def addDependency[B](implicit arg0: Tag[B]): MakeDSL[T]
    Definition Classes
    AddDependencyDSL
  10. final def addOp[R](op: SingletonInstruction)(newState: (SingletonRef) => R): R
    Attributes
    protected
    Definition Classes
    MakeDSLMutBase
  11. final def aliased[T1 >: T](name: Identifier)(implicit arg0: Tag[T1], pos: CodePositionMaterializer): MakeDSL[T]
    Definition Classes
    MakeDSLMutBase
  12. final def aliased[T1 >: T](implicit arg0: Tag[T1], pos: CodePositionMaterializer): MakeDSL[T]
    Definition Classes
    MakeDSLMutBase
  13. final def annotateParameter[P](name: Identifier)(implicit arg0: Tag[P]): MakeDSL[T]
    Definition Classes
    AddDependencyDSL
  14. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  15. def bind(impl: ImplDef): MakeDSLUnnamedAfterFrom[T]
    Attributes
    protected
    Definition Classes
    MakeDSLMakeDSLBase
  16. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  17. def confined: MakeDSL[T]
    Definition Classes
    Tagging
  18. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  19. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  20. def exposed: MakeDSL[T]
    Definition Classes
    Tagging
  21. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  22. final def from[I <: T](function: Functoid[I])(implicit d: DummyImplicit): MakeDSLUnnamedAfterFrom[T]

    A function that receives its arguments from DI object graph, including named instances via izumi.distage.model.definition.Id annotation.

    A function that receives its arguments from DI object graph, including named instances via izumi.distage.model.definition.Id annotation.

    The following syntaxes are supported by extractor macro:

    Inline lambda:

    make[Unit].from {
      i: Int @Id("special") => ()
    }

    Method reference:

    def constructor(@Id("special") i: Int): Unit = ()
    
    make[Unit].from(constructor _)
    
    make[Unit].from(constructor(_))

    Function value with an annotated signature:

    val constructor: (Int @Id("special"), String @Id("special")) => Unit = (_, _) => ()
    
    make[Unit].from(constructor)

    Using intermediate vals will lose annotations when converting a method into a function value, Prefer passing inline lambdas such as { x => y } or method references such as (method _) or (method(_)).:

    def constructorMethod(@Id("special") i: Int): Unit = ()
    
    val constructor = constructorMethod _
    
    make[Unit].from(constructor) // SURPRISE: Will summon regular Int, not a "special" Int from DI object graph
    make[Unit].from(constructorMethod _) // Will work correctly: summon "special" Int

    Prefer annotating parameter types, not parameters: class X(i: Int @Id("special")) { ... }

    case class X(i: Int @Id("special"))
    
    make[X].from(X.apply _) // summons special Int

    Functoid forms an applicative functor via its izumi.distage.model.providers.Functoid.pure & izumi.distage.model.providers.Functoid#map2 methods

    Definition Classes
    MakeDSLBase
    See also

    izumi.distage.reflection.macros.FunctoidMacro]

    Functoid is based on the Magnet Pattern: http://spray.io/blog/2012-12-13-the-magnet-pattern/

    Essentially Functoid is a function-like entity with additional properties, so it's funny name is reasonable enough: https://en.wiktionary.org/wiki/-oid#English

  23. final def from[I <: T](function: => I)(implicit arg0: Tag[I]): MakeDSLUnnamedAfterFrom[T]
    Definition Classes
    MakeDSLBase
  24. final def from[I <: T](implicit arg0: ClassConstructor[I]): MakeDSLUnnamedAfterFrom[T]
    Definition Classes
    MakeDSLBase
  25. final def fromEffect[F[_], I <: T](function: Functoid[F[I]])(implicit arg0: TagK[F], arg1: Tag[I]): MakeDSLUnnamedAfterFrom[T]
    Definition Classes
    MakeDSLBase
  26. final def fromEffect[F[_], I <: T](instance: F[I])(implicit arg0: TagK[F], arg1: Tag[I]): MakeDSLUnnamedAfterFrom[T]

    Bind to a result of executing a purely-functional effect

    Bind to a result of executing a purely-functional effect

    Example:

    import cats.effect.concurrent.Ref
    import cats.effect.IO
    
    make[Ref[IO, Int]].named("globalMutableCounter").fromEffect(Ref[IO](0))
    Definition Classes
    MakeDSLBase
  27. final def fromFactory[I <: T](implicit arg0: FactoryConstructor[I]): MakeDSLUnnamedAfterFrom[T]

    Definition Classes
    MakeDSLBase
    See also

    Auto-Factories feature

  28. final def fromResource[R0, R <: Lifecycle[LifecycleF, T]](function: Functoid[R0])(implicit adapt: Aux[R0, R], tag: LifecycleTag[R]): MakeDSLUnnamedAfterFrom[T]
    Definition Classes
    MakeDSLBase
  29. final def fromResource[R](function: Functoid[R with Lifecycle[LifecycleF, T]])(implicit tag: LifecycleTag[R], d: DummyImplicit): MakeDSLUnnamedAfterFrom[T]
    Definition Classes
    MakeDSLBase
  30. final def fromResource[R](instance: R with Lifecycle[LifecycleF, T])(implicit tag: LifecycleTag[R]): MakeDSLUnnamedAfterFrom[T]
    Definition Classes
    MakeDSLBase
  31. final def fromResource[R <: Lifecycle[LifecycleF, T]](implicit arg0: ClassConstructor[R], tag: LifecycleTag[R]): MakeDSLUnnamedAfterFrom[T]

    Bind to result of acquiring a resource

    Bind to result of acquiring a resource

    The resource will be released when the izumi.distage.model.Locator holding it is released. Typically, after .use is called on the result of izumi.distage.model.Injector#produce

    You can create resources with Lifecycle.make, by inheriting from Lifecycle or by converting an existing cats.effect.Resource

    You can bind a cats.effect.Resource directly:

    import cats.effect._
    
    val myResource: Resource[IO, Unit] = Resource.make(IO(println("Acquiring!")))(IO(println("Releasing!")))
    
    make[Unit].fromResource(myResource)
    Definition Classes
    MakeDSLBase
    See also

    - cats.effect.Resource: https://typelevel.org/cats-effect/datatypes/resource.html

  32. final def fromTrait[I <: T](implicit arg0: TraitConstructor[I]): MakeDSLUnnamedAfterFrom[T]

    Definition Classes
    MakeDSLBase
    See also

    Auto-Traits feature

  33. final def fromValue[I <: T](instance: I)(implicit arg0: Tag[I]): MakeDSLUnnamedAfterFrom[T]
    Definition Classes
    MakeDSLBase
  34. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  35. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  36. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  37. val key: TypeKey
    Attributes
    protected
    Definition Classes
    MakeDSLMakeDSLBase
  38. final def modify[I <: T](f: (T) => I)(implicit arg0: Tag[I]): MakeDSL[T]
    Definition Classes
    MakeDSLMutBase
  39. final def modifyBy(f: (Functoid[T]) => Functoid[T]): MakeDSL[T]
    Definition Classes
    MakeDSLMutBase
  40. val mutableState: SingletonRef
    Attributes
    protected
    Definition Classes
    MakeDSLMakeDSLMutBase
  41. def named[I](name: Option[I])(implicit arg0: IdContract[I]): MakeNamedDSL[T]
  42. def named(name: Identifier): MakeNamedDSL[T]
  43. def namedByImpl: MakeNamedDSL[T]
  44. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  45. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  46. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  47. final def refEffect[F[_], I <: T, EFF <: F[I]](name: Identifier)(implicit arg0: TagK[F], arg1: Tag[I], arg2: Tag[EFF]): MakeDSLUnnamedAfterFrom[T]
    Definition Classes
    MakeDSLBase
  48. final def refEffect[F[_], I <: T, EFF <: F[I]](implicit arg0: TagK[F], arg1: Tag[I], arg2: Tag[EFF]): MakeDSLUnnamedAfterFrom[T]
    Definition Classes
    MakeDSLBase
  49. final def refEffect[F[_], I <: T](name: Identifier)(implicit arg0: TagK[F], arg1: Tag[I]): MakeDSLUnnamedAfterFrom[T]
    Definition Classes
    MakeDSLBase
  50. final def refEffect[F[_], I <: T](implicit arg0: TagK[F], arg1: Tag[I]): MakeDSLUnnamedAfterFrom[T]

    Bind to result of executing an effect bound to a key at F[I]

    Bind to result of executing an effect bound to a key at F[I]

    This will execute the effect again for every refEffect binding

    Example:

    import cats.effect.concurrent.Ref
    import cats.effect.IO
    
    make[IO[Ref[IO, Int]]].named("counterFactory").from(Ref[IO](0))
    
    // execute the effect bound above to key `DIKey.get[IO[Ref[IO, Int]]].named("counterFactory")` to create and bind a new Ref
    make[Ref[IO, Int]].named("globalCounter1")
      .refEffect[IO, Ref[IO, Int]]("counterFactory")
    
    make[Ref[IO, Int]].named("globalCounter2")
      .refEffect[IO, Ref[IO, Int]]("counterFactory")
    
    // globalCounter1 and globalCounter2 are two independent mutable references
    Definition Classes
    MakeDSLBase
  51. final def refResource[R <: Lifecycle[LifecycleF, T]](name: Identifier)(implicit tag: LifecycleTag[R]): MakeDSLUnnamedAfterFrom[T]
    Definition Classes
    MakeDSLBase
  52. final def refResource[R <: Lifecycle[LifecycleF, T]](implicit tag: LifecycleTag[R]): MakeDSLUnnamedAfterFrom[T]

    Bind to a result of acquiring a resource bound to a key at R

    Bind to a result of acquiring a resource bound to a key at R

    This will acquire a NEW resource again for every refResource binding

    Definition Classes
    MakeDSLBase
  53. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  54. final def tagged(tags: BindingTag*): MakeDSL[T]
    Definition Classes
    MakeDSLMutBaseTagging
  55. def toSame: (SingletonRef) => MakeDSL[T]
    Attributes
    protected
    Definition Classes
    MakeDSLMakeDSLMutBase
  56. def toString(): String
    Definition Classes
    AnyRef → Any
  57. def todo(implicit pos: CodePositionMaterializer): MakeDSLUnnamedAfterFrom[T]

    Create a dummy binding that throws an exception with an error message when it's created.

    Create a dummy binding that throws an exception with an error message when it's created.

    Useful for prototyping.

    Definition Classes
    MakeDSLBase
  58. final def using[I <: T](name: Identifier)(implicit arg0: Tag[I]): MakeDSLUnnamedAfterFrom[T]
    Definition Classes
    MakeDSLBase
  59. final def using[I <: T](implicit arg0: Tag[I]): MakeDSLUnnamedAfterFrom[T]

    Bind by reference to another bound key

    Bind by reference to another bound key

    Example:

    trait T
    class T1 extends T
    
    make[T1]
    make[T].using[T1]

    Here, only T1 will be created. A class that depends on T will receive an instance of T1

    Definition Classes
    MakeDSLBase
  60. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  61. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  62. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()

Inherited from MakeDSLBase[T, MakeDSLUnnamedAfterFrom[T]]

Inherited from MakeDSLMutBase[T, MakeDSL[T]]

Inherited from Tagging[MakeDSL[T]]

Inherited from AddDependencyDSL[T, MakeDSL[T]]

Inherited from AnyRef

Inherited from Any

Ungrouped