в рантайме впишу туда невалидные данные?
Они работают не в компайлтайме. Это типы которые обеспечивают что то что их населяет подчиняется тому что указано
Он на самом деле не дописал немного, у них есть сахарок и интеграции с серкой и подобными для создания из рантайм-значений, хотя сам гвпольпе предлагает использовать везде refineV напрямую. Cахарок лежит вот тут и юзается как-то так: scala> import eu.timepit.refined.api.{ Refined, RefinedTypeOps } * | import eu.timepit.refined.numeric.Positive * * scala> type PosInt = Int Refined Positive * * scala> object PosInt extends RefinedTypeOps[PosInt, Int] * * scala> PosInt(1) * res0: PosInt = 1 * * scala> PosInt.from(2) * res1: Either[String, PosInt] = Right(2)
Обсуждают сегодня