You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue was labelled with: A-syntaxext, B-RFC in the Rust repository
e.g. (using the currently-invalid brace syntax from #11892)
macro_rules! spawn {($b: block_internals) => {spawn(proc(){ $b })}}spawn!{use foo::bar;fn baz(){}if x ==0{ bar()}let a =1+2;
foo();
baz()}
I don't believe this is currently possible to emulate. e.g. with $($s: stmt);* you have to write fn foo() {}; if x == 0 { bar() }; ... and without the ; you end up with foo() bar() being valid (and expr doesn't allow for statements like let and fn bar() {}). The best solution I've found is just writing ($e: expr) => { ... } but this requires double braces:
spawn!{ foo()}// okspawn!{foo(); bar()}// not ok! :(spawn!{{foo(); bar()}}// ok :(
This would make sugary control-flow-y macros like spawn and scope/finally from rust-lang/rust#11905 more natural.
The text was updated successfully, but these errors were encountered:
Issue by huonw
Thursday Jan 30, 2014 at 08:25 GMT
For earlier discussion, see rust-lang/rust#11928
This issue was labelled with: A-syntaxext, B-RFC in the Rust repository
e.g. (using the currently-invalid brace syntax from #11892)
I don't believe this is currently possible to emulate. e.g. with
$($s: stmt);*
you have to writefn foo() {}; if x == 0 { bar() }; ...
and without the;
you end up withfoo() bar()
being valid (andexpr
doesn't allow for statements likelet
andfn bar() {}
). The best solution I've found is just writing($e: expr) => { ... }
but this requires double braces:This would make sugary control-flow-y macros like
spawn
andscope
/finally
from rust-lang/rust#11905 more natural.The text was updated successfully, but these errors were encountered: