2015-05-30 15 views
5

Neden this yapar: uygulandığı değil henüz:Makrolar enterpolasyonlu jeton ağaçlarını genişletmez mi?

macro_rules! a_macro { 
    ($($a:tt)+) => ($($a)+); 
} 

fn main() { 
    let x:u32 = 1; 
    let y:u32 = a_macro!(-x); 
} 

<anon>:2:23: 2:25 error: unexpected token: `an interpolated tt` 
<anon>:2  ($($a:tt)+) => ($($a)+); 
           ^~ 
playpen: application terminated with error code 101 

cevap

5

ile neden derlemek için başarısız. Bu bilinen bir sınırlamadır (Rust 1.0'dan itibaren). tt, makrolar için are useful argümanlarını kullanır, ancak kullanıldığında daima makrolara iletilmelidir.

+0

Bu beni üzüyor. Makroları makrolarla umuyordum ve jetonları iade edememek acı verici hale getiriyor. :-( – user

+0

@user: Makrolar şu an devam eden bir çalışmadır, zaten inanılmaz derecede faydalıdır, ancak olabildiğince esnek olmadıkça, hiçbir zaman bu kadar esnek olmamışlardır. –

+0

@MatthieuM. geleceğin muhteşem Pas kullanmak için sipariş chronology: -D – user

İlgili konular