Skip to content

`bynk.types.is_base_mismatch`

[bynk.types.is_base_mismatch] `is Quantity` checks an `Int` value, but got `String`

value is RefinedType narrows a value to a refined type by checking its predicates at runtime. That only makes sense when the value’s type matches the refined type’s base — you cannot check a String against an Int-based refinement.

type Quantity = Int where InRange(1, 100)
fn f(s: String) -> Bool {
s is Quantity -- Quantity is Int-based; s is a String
}

Check the value against a refined type of its own base type, or convert first:

  • For an Int value, use an Int-based refined type (Quantity = Int where …).
  • For a String value, use a String-based one (Code = String where …).