final case class LayerBuilder[Type, Expr](target0: List[Type], remainder: RemainderMethod[Type], providedLayers0: List[Expr], layerToDebug: PartialFunction[Expr, Debug], sideEffectType: Type, anyType: Type, typeEquals: (Type, Type) => Boolean, foldTree: (LayerTree[Expr]) => Expr, method: ProvideMethod, exprToNode: Expr => Node[Type, Expr], typeToNode: Type => Node[Type, Expr], showExpr: Expr => String, showType: Type => String, reportWarn: String => Unit, reportError: String => Nothing)
LayerBuilder houses the core logic for compile-time layer construction. It is parameterized by Type and Expr such that it can be shared across Scala 2 and 3, which have incompatible macro libraries.
Value parameters
exprToNode
A method for converting an Expr into a Node for use in the graph traversal.
foldTree
A method for folding a tree of layers into the final layer.
layerToDebug
A method which allows LayerBuilder to filter/extract the special ZLayer.Debug layers from the provided layers.
method
The sort of method that is being called: provide, provideSome, or provideCustom. This is used to provide improved compilation warnings.
providedLayers0
A list of layers ASTs that have been provided by the user.
remainder
A list of types indicating the input of the final layer. This would be the parameter of ZIO.provideSome
target
A list of types indicating the intended output of the final layer. This is generally determined by the R of the effect that ZIO.provide is called on.
typeEquals
A method for comparing types: Used in the construction of the final layer
typeToNode
A method for converting a leftover type into a Node to be used in the graph traversal.