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 {
...