2014-11-12 2 views
2

Интересно, можно ли использовать линейку с перечислением. Пример игрушек:соответствует перечислимому диапазону

enum Things { 
    One, 
    Two, 
    Three 
} 

pub fn main() { 
    match One { 
     One...Two => println!("one to two"), 
     Three => println!("three") 
    } 
} 

Ошибка:

<anon>:9:9: 9:12 error: only char and numeric types are allowed in range [E0029] 
<anon>:9   One...Two => println!("one to two"), 
       ^~~ 
error: aborting due to previous error 
playpen: application terminated with error code 101 

http://is.gd/rxKMfk

Итак, можно сделать что-то вроде этой работы?

+2

Не то, что вы просите, но вы можете сопоставить две перечисления в одной руке: 'One | Два => ... ' – snf

ответ

5

Не совсем. Перечисления не упорядочены. Вы можете, однако, делать:

enum Things { 
    One = 1, 
    Two = 2, 
    Three = 3 
} 

pub fn main() { 
    match One as uint { 
     1..2 => println!("one to two"), 
     3 => println!("three") 
    } 
} 
Смежные вопросы