erro: o parâmetro de tipo `D` deve ser usado como o parâmetro de tipo para algum tipo local

Estou usando o Nickel.rs com o MongoDB para criar uma API RESTful. Eu gostaria de implementar um genéricoResponder para o tipomongodb::error::Result<Option<bson::Document>>.

Esta é a implementação que escrevi com base nos exemplos que encontrei paraResponder:

impl<D> Responder<D> for Result<Option<Document>> {

    fn respond<'a>(self, mut response: Response<'a, D>) -> MiddlewareResult<'a, D> {
        response.set(MediaType::Json);

        match self {
            Ok(Some(doc))=>{
                ApiResponse{data: Bson::Document(doc).to_json()}.to_json()
            },
            Ok(None)=>{
                response.set(StatusCode::NotFound);
                ApiError{error: "Not found".to_string()}.to_json()
            },
            Err(e)=>{
                response.set(StatusCode::InternalServerError);
                ApiError{error: format!("{}",e)}.to_json()
            }

        }
    }
}

e estou recebendo o seguinte erro:

error: type parameterD deve ser usado como o parâmetro de tipo para algum tipo local (por exemplo,MyStruct<T>); somente características definidas na caixa atual podem ser implementadas para um parâmetro de tipo [E0210]

Eu corrirustc --explain E0210 para uma explicação e se meu entendimento estiver correto, preciso fornecer uma característicaD como um argumento de tipo paraimpl<D>, mas não entendo qual característica fornecer.

eu tenteiimpl<D: =()> mas isso produziu o mesmo erro.

questionAnswers(2)

yourAnswerToTheQuestion