They look like declerative macros but dont use the same syntax to parse the input and return the output. Instead they get access to the Full code input and can parse the AST and return more complex code/structure compared to the

sqlx::query!("SELECT * FROM users").exec();