2017-01-15 9 views
3

我有這樣一個枚舉:如何解決「警告:未使用的變量」的枚舉在Rust中的命名參數?

pub enum Tag<'a> { 
    Container { c: Vec<Tag<'a>> }, 
    // ... 
} 

,當我嘗試匹配:

impl<'a> Display for Tag<'a> { 
    fn fmt(&self, f: &mut Formatter) -> fmt::Result { 
     match *self { 
      Tag::Container { ref c } => write!(f, "{}", "container"), 
      // ... 
     } 
    } 
} 

我得到:

warning: unused variable: `c`, #[warn(unused_variables)] on by default 
    | 
65 |    Tag::Container{ref c} => write!(f, "{}", "container"), 

和其他一些地方。

我試圖使用_,只是刪除ref c,但它都會導致錯誤。

回答

6

您可以使用..

match *self { 
    Tag::Container { .. } => write!(f, "{}", "container"), 

這是覆蓋在書中,特別是在Ignoring bindings它是用於忽略包裹在一個枚舉變形值:

enum OptionalTuple { 
    Value(i32, i32, i32), 
    Missing, 
} 

let x = OptionalTuple::Value(5, -2, 3); 

match x { 
    OptionalTuple::Value(..) => println!("Got a tuple!"), 
    OptionalTuple::Missing => println!("No such luck."), 
}