Quando si implementa un tratto, il tratto o il tipo per cui lo si sta implementando deve essere definito nella stessa cassa. Nel tuo esempio non è così:il tratto Responder
è definito da nickel
e Result
è definito da mongodb
.
Il modo più comune per aggirare questo problema è definire il proprio tipo, avvolgendo il tipo desiderato in una tupla struct con un singolo componente (il cosiddetto modello newtype ):
struct Result(mongodb::error::Result<Option<Document>>);
impl Responder for Result {
...