A macro to declare multiple mutable variables in one statement.

var! { ... } is a generalised form of let mut x = ...; , allowing for several mutable variables to be declared and initialised at once, inspired by the keyword of the same name in languages like Nim and C#.

Available on crates.io. Source.

"var! {" ( identifier (":" type)? "=" expression )* "}"

where

"..." represents a literal ...

represents a literal (...) is for grouping

is for grouping * is zero-or-more copies of the previous entity, comma separated, with optional trailing comma

is zero-or-more copies of the previous entity, comma separated, with optional trailing comma ? is zero-or-one copies of the pervious entity (i.e. optional)

Notably,

var! should always be invoked with {} s or else one will get compile errors (invoking a macro with () and [] mean the its internals are parsed as an expression, but declaring a variable with let is a statement),

should always be invoked with s or else one will get compile errors (invoking a macro with and mean the its internals are parsed as an expression, but declaring a variable with is a statement), an initialising expression is required, unlike conventional let ,

, pattern matching cannot be performed.

#[ macro_use ] extern crate var ; var ! { a = 1 , b : & str = "foo" , c = 3.0 , } a += 1 ; b = "bar" ; c *= 7.0 ;

Generating Fibonacci numbers with a loop: