command_macros::cmd!
[−]
[src]
macro_rules! cmd { ({$e:expr}) => { ... }; ({$e:expr} (($a:expr)) $($tail:tt)*) => { ... }; (@stringify {}) => { ... }; (@stringify {- $($rest:tt)*}) => { ... }; (@stringify {+ $($rest:tt)*}) => { ... }; (@stringify {= $($rest:tt)*}) => { ... }; (@stringify {, $($rest:tt)*}) => { ... }; (@stringify {. $($rest:tt)*}) => { ... }; (@stringify {; $($rest:tt)*}) => { ... }; (@stringify {: $($rest:tt)*}) => { ... }; (@stringify {$i:ident $($rest:tt)*}) => { ... }; ({$e:expr} (-$($tts:tt)*) $($tail:tt)*) => { ... }; ({$e:expr} (+$($tts:tt)*) $($tail:tt)*) => { ... }; ({$e:expr} ($a:expr) $($tail:tt)*) => { ... }; ({$e:expr} [$aa:expr] $($tail:tt)*) => { ... }; ({$e:expr} match ($m:expr) { $($($p:pat)|+ $(if $g:expr)* => {$($rr:tt)*} ),* } $($tail:tt)*) => { ... }; ({$e:expr} match ($m:expr) { $($($p:pat)|+ $(if $g:expr)* => {$($rr:tt)*},)* } $($tail:tt)*) => { ... }; ({$e:expr} match ($m:expr) { $($($p:pat)|+ $(if $g:expr)* => {$($rr:tt)*} )* } $($tail:tt)*) => { ... }; ({$e:expr} if let $p:pat = ($m:expr) { $($then:tt)* } else { $($els:tt)* } $($tail:tt)*) => { ... }; ({$e:expr} if let $p:pat = ($m:expr) { $($then:tt)* } $($tail:tt)*) => { ... }; ({$e:expr} if ($b:expr) { $($then:tt)* } else { $($els:tt)* } $($tail:tt)*) => { ... }; ({$e:expr} if ($b:expr) { $($then:tt)* } $($tail:tt)*) => { ... }; ({$e:expr} for $p:pat in ($i:expr) { $($body:tt)* } $($tail:tt)*) => { ... }; ({$e:expr} $a:ident $($tail:tt)*) => { ... }; (($c:expr) $($tail:tt)*) => { ... }; ($c:ident $($tail:tt)*) => { ... }; }
Simple macro for creating Command
.
Please read the syntax description in the crate's documentation.
Please note that this macro is not whitespace-sensitive and the following
will evaluate to four separate arguments (as opposed to one in command!
):
cmd!(echo (foo)(bar)baz(qux)) // don't do it!
Examples
#[macro_use] extern crate command_macros; fn main() { cmd!( echo ((2+2)) ).status.unwrap(); }