zio.schema.AccessorBuilder.scala Maven / Gradle / Ivy
package zio.schema
trait AccessorBuilder {
type Lens[F, S, A]
type Prism[F, S, A]
type Traversal[S, A]
// TODO should we restrict F <: Singleton with String
def makeLens[F, S, A](product: Schema.Record[S], term: Schema.Field[S, A]): Lens[F, S, A]
def makePrism[F, S, A](sum: Schema.Enum[S], term: Schema.Case[S, A]): Prism[F, S, A]
def makeTraversal[S, A](collection: Schema.Collection[S, A], element: Schema[A]): Traversal[S, A]
}