}
}
-
-// select!
-macro_rules! select_if {
-
- {
- $index:expr,
- $count:expr
- } => {
- fail
- };
-
- {
- $index:expr,
- $count:expr,
- $port:path => [
- $(type_this $message:path$(($(x $x: ident),+))dont_type_this*
- -> $next:ident => { $e:expr }),+
- ]
- $(, $ports:path => [
- $(type_this $messages:path$(($(x $xs: ident),+))dont_type_this*
- -> $nexts:ident => { $es:expr }),+
- ] )*
- } => {
- if $index == $count {
- match move pipes::try_recv($port) {
- $(some($message($($($x,)+)* next)) => {
- // FIXME (#2329) we really want move out of enum here.
- let $next = unsafe { let x <- *ptr::addr_of(next); x };
- $e
- })+
- _ => fail
- }
- } else {
- select_if!{
- $index,
- $count + 1
- $(, $ports => [
- $(type_this $messages$(($(x $xs),+))dont_type_this*
- -> $nexts => { $es }),+
- ])*
- }
- }
- };
-}
-
-macro_rules! select {
- {
- $( $port:path => {
- $($message:path$(($($x: ident),+))dont_type_this*
- -> $next:ident $e:expr),+
- } )+
- } => {
- let index = pipes::selecti([$(($port).header()),+]/_);
- select_if!{index, 0 $(, $port => [
- $(type_this $message$(($(x $x),+))dont_type_this* -> $next => { $e }),+
- ])+}
- }
+fn macros() {
+ include!("select-macro.rs");
}
// Code
},
do_baz(b) -> _next {
- if b { debug!("true") } else { debug!("false") }
+ if *b { debug!("true") } else { debug!("false") }
}
}
}