Avatar ·

Pourquoi en Rust les macros comme `println!` ont-elles un point d'exclamation ?

Bonjour à tous ! J'ai commencé à apprendre Rust il y a littéralement une semaine et je suis tombé sur une question qui me trouble un peu. Pourquoi en Rust, pour afficher dans la console, écrit-on `println!` avec un point d'exclamation ? J'ai l'habitude de Python, Java et C++, où les appels de fonctions se font toujours sans point d'exclamation, par exemple `print()`, `System.out.println()` ou `std::cout <<`. J'ai regardé des exemples — partout on écrit `println!("Hello, world!");`. J'ai essayé d'écrire simplement `println("Hello");` — le compilateur a renvoyé une erreur : ``` error[E0423]: expected function, found macro `println` --> src/main.rs:2:5 | 2 | println("Hello"); | ^^^^^^^ not a function ``` Pourquoi cela ? Est-ce une fonction spéciale ? Ou est-ce une particularité du langage ? J'ai lu que Rust a des macros, mais je ne comprends pas bien en quoi elles diffèrent des fonctions ordinaires.