2017-01-15 6 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."), 
}