macro
Source: compiler/src/builtin_docs/keywords.md Declares a function-style macro: macro name(Expr a, …) -> Code { … }, used as name!(…).
It runs at compile time with the call’s arguments as unevaluated Expr
values and returns code that replaces the call: an expression, statements,
or declarations depending on where the call is. A last Vec<Expr> parameter
takes the remaining arguments. Contextual: use macro::{…} names the macro
model module.
use macro::{Expr, Code};
/// `square!(e)` expands to `e * e`.
macro square(Expr e) -> Code {
return quote expr { ${e} * ${e} };
}
See also#
Vecfn: Declares a function, a method, or (written in an expression) an anonymous function.let: Declares a mutable local variable.const: Declares a binding that cannot be reassigned: a local, a module constant, or a class field that is set only bynew.static: Declares a module-level or class-level slot shared by the whole program, or a method withoutself.readonly: A read-only view of a value: nothing reachable through it can be changed.if: Runs a block when aboolcondition is true.else: Introduces the branch of anifthat runs when its condition is false (or its pattern does not match).