我正在使用 Nickel.rs 和 MongoDB 来构建一个 RESTful api。我想Responder
为 type实现一个泛型mongodb::error::Result<Option<bson::Document>>
。
这是我根据我找到的示例编写的实现Responder
:
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()
}
}
}
}
我收到以下错误:
错误:类型参数
D
必须用作某些本地类型的类型参数(例如MyStruct<T>
);只能为类型参数实现当前 crate 中定义的特征 [E0210]
我跑去rustc --explain E0210
解释,如果我的理解是正确的,我需要提供一个特征D
作为类型参数impl<D>
,但我不明白要提供哪个特征。
我试过impl<D: =()>
了,但这产生了同样的错误。