Packages

class SubcontextImpl[F[_], +A] extends Subcontext[F, A]

Linear Supertypes
Subcontext[F, A], AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. SubcontextImpl
  2. Subcontext
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new SubcontextImpl(externalKeys: Set[DIKey], parent: LocatorRef, plan: Plan, functoid: Functoid[A], providedExternals: Map[DIKey, Any], selfKey: DIKey)

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. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  8. val externalKeys: Set[DIKey]
  9. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  10. val functoid: Functoid[A]
  11. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  12. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  13. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  14. final def map[B](f: (A) => B)(implicit arg0: Tag[B]): Subcontext[F, B]
    Definition Classes
    Subcontext
  15. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  16. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  17. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  18. val parent: LocatorRef
  19. val plan: Plan
    Definition Classes
    SubcontextImplSubcontext
  20. def produce()(implicit F: QuasiIO[F], tagK: TagK[F]): Lifecycle[F, A]
    Definition Classes
    SubcontextImplSubcontext
  21. def produceRun[B](f: (A) => F[B])(implicit F: QuasiIO[F], tagK: TagK[F]): F[B]

    Same as .produce[F]().use(f)

    Same as .produce[F]().use(f)

    Definition Classes
    SubcontextImplSubcontext
    Note

    Resources allocated by the subcontext will be closed after f exits. Use produce if you need to extend the lifetime of the Subcontext's resources.

  22. def provide[T](name: Identifier)(value: T)(implicit arg0: Tag[T], pos: CodePositionMaterializer): Subcontext[F, A]
    Definition Classes
    SubcontextImplSubcontext
  23. def provide[T](value: T)(implicit arg0: Tag[T], pos: CodePositionMaterializer): Subcontext[F, A]
    Definition Classes
    SubcontextImplSubcontext
  24. val providedExternals: Map[DIKey, Any]
  25. val selfKey: DIKey
  26. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  27. def toString(): String
    Definition Classes
    AnyRef → Any
  28. def unsafeModify[B](f: (Functoid[A]) => Functoid[B]): Subcontext[F, B]

    Unsafely substitute the Functoid that extracts the root component.

    Unsafely substitute the Functoid that extracts the root component.

    Note, because the plan has been calculated ahead of time with A as the root, it's not possible to request additional components via Functoid that weren't already in the graph as dependencies of A – everything that A doesn't depend on is not in the plan.

    Example:

    val submodule = new ModuleDef {
      make[Int].fromValue(3)
      make[Int].named("five").from((_: Int) + 2)
      make[String].fromValue("x")
    }
    
    makeSubcontext[Int].named("five").withSubmodule(submodule)
    
    ...
    
    (subcontext: Subcontext[Int])
      .unsafeModify(_ => Functoid.identity[String])
      .produceRun(println(_))
      // error: `String` is not available

    A binding for String is defined in the submodule, but is not referenced by Int @Id("five") binding. Therefore, it was removed by garbage collection and cannot be extracted with this Subcontext. You'd have to create another Subcontext[String] with the same submodule to create String:

    makeSubcontext[String](submodule)
    
    ...
    
    (subcontext: Subcontext[String])
      .produceRun(println(_))
      // x

    If you DO need dynamic replanning, you'll need to use nested injection directly.

    Definition Classes
    SubcontextImplSubcontext
  29. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  30. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  31. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  32. final def widen[B](implicit ev: <:<[A, B]): Subcontext[F, B]
    Definition Classes
    Subcontext
    Annotations
    @inline()
  33. final def widen[B >: A]: Subcontext[F, B]
    Definition Classes
    Subcontext
    Annotations
    @inline()
  34. final def widenF[G[_]](implicit ev: <:<[F[Unit], G[Unit]]): Subcontext[G, A]
    Definition Classes
    Subcontext
    Annotations
    @inline()
  35. final def widenF[G[x] >: F[x]]: Subcontext[G, A]
    Definition Classes
    Subcontext
    Annotations
    @inline()

Deprecated Value Members

  1. final def produceRunSimple[B](f: (A) => B)(implicit ev: <:<[F[Unit], Identity[Unit]]): B
    Definition Classes
    Subcontext
    Annotations
    @deprecated
    Deprecated

    (Since version 1.3.0) use regular produceRun with Subcontext[F = Identity]

Inherited from Subcontext[F, A]

Inherited from AnyRef

Inherited from Any

Ungrouped