Why do println! and other macros have an exclamation mark in Rust?
Hi everyone! I started learning Rust literally a week ago and came across a question that confuses me a bit. Why in Rust, when printing to the console, do we write `println!` with an exclamation mark? I'm used to Python, Java, and C++, where function calls are always without an exclamation mark, for example, `print()`, `System.out.println()`, or `std::cout <<`.\n\nI looked at examples — everywhere they write `println!("Hello, world!");`. I tried to write just `println("Hello");` — the compiler gave an error:\n\n```\nerror[E0423]: expected function, found macro `println`\n --> src/main.rs:2:5\n |\n2 | println("Hello");\n | ^^^^^^^ not a function\n```\n\nWhy is that? Is it some special function? Or is it a language feature? I read that Rust has macros, but I don't quite understand how they differ from regular functions.