2017-05-19 5 views

答えて

2

Fooはタイプではありません。タイプはi32またはStringのようなものですが、Vec<u8>またはResult<Option<Vec<bool>>, String>のようなものもあります。

それは、このようなコードを書くためにどんな意味がありません。

struct A<T>(T); 

fn main() { 
    A<u8>(42); 
} 

あなたはでのidentとタイプの両方合格する必要があります。

macro_rules! foo { 
    ($T1: ty, $T2: ident) => { 
     fn test() -> $T1 { 
      $T2 { x: 3 } 
     } 
    } 
} 

foo!(A, A); 

それとも、カンニングすることができますがトークンツリーを使用します。

macro_rules! foo { 
    ($T: tt) => { 
     fn test() -> $T { 
      $T { x: 3 } 
     } 
    } 
} 
関連する問題