How do you define a `struct` that has a polymorphic struct and trait associated with it, but where the trait does not factor into the `struct` definition, only implementation?

Here the compiler refuses to accept this definition of `Interpreter` since `Evaluator` is unused, yet it is necessary within the implementation:

```
pub trait StateEvaluator<State> {
    fn eval(state: State, buf: &mut [u8]);
}

pub struct Interpreter<State, Evaluator> {
    state: State
}

impl<State: Default, Evaluator: StateEvaluator<State>> Interpreter<State, Evaluator> {
    pub fn new() -> Interpreter<State, Evaluator> {
        Interpreter {
            state: Default::default()
        }
    }

    pub fn eval(&self, buf: &mut [u8]) {
        Evaluator::eval(self.state, buf)
    }
}

```

Removing that from the `struct` causes a mismatch on the `impl` version and a different compiler error about expecting 1 argument and getting 2.