トレイトを実装するときは、トレイトまたはそれを実装するタイプのいずれかを同じクレートで定義する必要があります。あなたの例ではそうではありません:トレイトResponder
nickel
によって定義されます 、およびResult
mongodb
によって定義されます 。
これを回避する一般的な方法は、目的の型を単一のコンポーネントを持つタプル構造体にラップすることによって、独自の型を定義することです(いわゆるニュータイプパターン ):
struct Result(mongodb::error::Result<Option<Document>>);
impl Responder for Result {
...