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.