I realized that this is needed only because the only way to access the underlying route from the TrieRoute enum type is to use a match block. But it can be simplified by using a special pattern match.
```
match *route {
  Simple(r) | Variable(r) => // ...
}
```