10 · Strings
Literales de cadena nominales validados
Un literal como Email\"[email protected]\" se acepta solo si el predicado del newtype de cadena validado acepta su contenido estático durante la compilación. Las cadenas dinámicas usan el constructor falible. Se conserva la semántica de los templates etiquetados por funciones.
En esta página
Un literal como Email"[email protected]" se acepta solo si el predicado del newtype de cadena validado acepta su contenido estático durante la compilación. Las cadenas dinámicas usan el constructor falible. Se conserva la semántica de los templates etiquetados por funciones.
Ejemplo completo
Literales de cadena nominales validados.
nominal-string-literals.zolo
// expect: [email protected]
// expect: true
// expect: empty
// expect: [email protected]
// expect: callable
const required = "@"
fn valid_email(value: str) -> bool = value.contains(required)
newtype Email(str) where |value| valid_email(value)
newtype Empty(str) where |value| value == ""
let email = Email"[email protected]"
print(email.unwrap())
let input = "invalid"
print(Email.new(input).is_err())
let empty = Empty""
print(if empty.unwrap() == "" { "empty" } else { "wrong" })
mod address { pub newtype Address(str) where |value| value.contains("@") }
use address::{Address as Mail}
print(Mail"[email protected]".unwrap())
fn callable() -> str { let Email = |parts: [str]| parts[0]; Email"callable" }
print(callable())
Reglas y comportamiento
Validación, esquemas y unidades · Documentación
Desde un checkout del repositorio:
zolo examples/features/nominal-string-literals.zolo
Consulta también