Conceptos básicos
Texto fuente y nombres
.sd los archivos son UTF-8. Strings/comments puede contener Unicode; Los identificadores siguen siendo ASCII. Todos los nombres comunes, incluidos los tipos y variantes, están en minúsculas. Las constantes son mayúsculas y minúsculas.
// ação and 日本語 are valid comment text
const MAX_ITEMS = 64
let greeting = "olá"
El literal tiene un tipo prestado estático str. El UTF-8 válido de propiedad utiliza el string. len devuelve la longitud del byte; Las operaciones Unicode scalar/grapheme pertenecen a bibliotecas.
Fijaciones
let answer = 42
let mut count: usize = 0
let linear ticket = acquire_ticket()
Los enlaces son inmutables de forma predeterminada. La mutación a través de un enlace requiere mut. linear crea una obligación de consumo exactamente una vez.
Tipos de núcleos
- números enteros:
i8…i64,u8…u64,isize,usize;bytealiasu8 - flotadores:
f32,f64 - controlar:
bool,void,never - text/buffers:
str,string,bytes,shared_bytes - compuesto: matrices
[n]t, cortes[]t/mut []t, tuplas, estructuras, ADT, uniones, opciones, resultados, valores de funciones, punteros, genéricos,linear t
Agregados
struct point { x: i64, y: i64 }
let origin = point.{ x: 0, y: 0 }
type color { red green blue }
let selected = color.green
El compilador limpio no tiene enum palabra clave; utilice un ADT sin carga útil. Los sindicatos crudos requieren unsafe construction/access.
Expresiones
bloques, if, y match valores de rendimiento. Utilice la expresión final para un resultado implícito y ret para un regreso anticipado. La aritmética de enteros sigue las reglas deterministas en SEMANTIC_RULES.md; la indexación segura permanece marcada en las versiones de lanzamiento.
El compilador limpio implementa tipos phase-1/2 f"..." interpolación para texto, bool, enteros, flotantes, especificaciones de formato y estático display/debug rasgos. uso {{/}} para llaves literales y .to_string()? sólo cuando se requiere una cadena contigua propia. La impresión sigue siendo una operación explícita de la biblioteca.