menu implementation

You could return an `Option` instead of `-1`. That is considered a good practice in Rust when dealing with optional values.

For example:

```
match from_str(trimmed) {
    Some(x @ 0...3) => x, // Here, x is the optional value returned by from_str
    _               => None
}
```