object RecordSchema
- Companion:
- class
Type members
Types
type Concat[X <: RecordSchema, Y <: RecordSchema] = X match {
case EmptySchema => Y
case SchemaCons[x1, xs1] => SchemaCons[x1, Concat[xs1, Y]]
}
Type of the concatenation of two schemas.
Type of the concatenation of two schemas.
type IndexOfTypeInTupleAux[T <: Tuple, A, N <: Int] = T match {
case EmptyTuple => Nothing
case A *: t => N
case _$9 *: t => IndexOfTypeInTupleAux[t, A, S[N]]
}
type PropAt[X <: RecordSchema, N <: Int] = X match {
case EmptySchema => Nothing
case SchemaCons[p, s] => N match {
case 0 => p
case S[n] => PropAt[s, n]
}
}
type Remove[P1 <: RecordProperty0, S <: RecordSchema] = S match {
case EmptySchema => EmptySchema.type
case SchemaCons[P1, st] => st
case SchemaCons[pt, st] => SchemaCons[pt, Remove[P1, st]]
}
type TupleToSchema[T <: Tuple] = T match {
case EmptyTuple => EmptySchema
case p *: t => SchemaCons[p, TupleToSchema[t]]
}
type Unapply[X <: RecordSchema] = X match {
case EmptySchema => None.type
case SchemaCons[p, s] => Some[(p, s)]
}
type ValueAt[X <: RecordSchema, N <: Int] = X match {
case EmptySchema => Nothing
case SchemaCons[p, s] => N match {
case 0 => PropertyValueType[p]
case S[n] => ValueAt[s, n]
}
}
Value members
Concrete methods
transparent inline def indexOfProp[S1 <: RecordSchema, P <: RecordProperty0](inline schema: S1, inline property: P): IndexOfProp[P]
transparent inline def indicesOfProps[S1 <: RecordSchema, S2 <: RecordSchema](inline s1: S1, inline s2: S2): IndicesOfProps[S2]
infix transparent inline def prepend[S <: RecordSchema, P <: RecordProperty0](inline p: P, inline schema: S): SchemaCons[P, S]
transparent inline def removeDoesntWork[P1 <: RecordProperty0, S <: RecordSchema](inline p1: P1, inline schema: S): Remove[P1, S]
transparent inline def valueAt[X <: RecordSchema, I <: Int](inline schema: X, inline i: I)(v: Values): ValueAt[X, I]