Les bases
Texte source et noms
.sd les fichiers sont UTF-8. Strings/comments peut contenir du Unicode ; les identifiants restent ASCII. Tous les noms ordinaires, y compris les types et les variantes, sont en minuscules. Les constantes sont en cas de serpent supérieur.
// ação and 日本語 are valid comment text
const MAX_ITEMS = 64
let greeting = "olá"
Le littéral a un type emprunté statique str. UTF-8 valide possédé utilise string. len renvoie la longueur en octets ; Les opérations Unicode scalar/grapheme appartiennent aux bibliothèques.
Reliures
let answer = 42
let mut count: usize = 0
let linear ticket = acquire_ticket()
Les liaisons sont immuables par défaut. La mutation via une liaison nécessite mut. linear crée une obligation de consommation unique.
Types de base
- entiers :
i8…i64,u8…u64,isize,usize;bytepseudonymesu8 - flotteurs :
f32,f64 - contrôle :
bool,void,never - text/buffers:
str,string,bytes,shared_bytes - composé : tableaux
[n]t, tranches[]t/mut []t, tuples, structures, ADT, unions, options, résultats, valeurs de fonction, pointeurs, génériques,linear t
Agrégats
struct point { x: i64, y: i64 }
let origin = point.{ x: 0, y: 0 }
type color { red green blue }
let selected = color.green
Le compilateur propre n'a pas de mot-clé enum ; utilisez un ADT sans charge utile. Les unions brutes nécessitent unsafe construction/access.
Expressions
Blocs, if, et match valeurs de rendement. Utilisez l'expression finale pour un résultat implicite et ret pour un retour anticipé. L'arithmétique entière suit les règles déterministes de SEMANTIC_RULES.md; l'indexation sécurisée reste vérifiée dans les versions de version.
Le compilateur propre implémente typé phase-1/2 f"..." interpolation pour le texte, les booléens, les entiers, les flottants, les spécifications de format et les valeurs statiques display/debug traits. Utiliser {{/}} pour les accolades littérales et .to_string()? uniquement lorsqu'une chaîne contiguë possédée est requise. L'impression reste une opération explicite de la bibliothèque.