Hey @Raymundo_63313!
The reason you’re seeing an error here is that the Cursor<T>
type only implements Stream
if the T
implements DeserializeOwned
, Unpin
, Send
, and Sync
. You can see this requirement here: Cursor in mongodb - Rust. In your example, the I
type is only required to implement MongoDbModel
though, so all the trait requirements aren’t satisfied.
To fix this, you can update your MongoDbModel
trait to inherit from those traits:
trait MongoDbModel: DeserializeOwned + Sync + Send + Unpin { ... }
Or, you can update the constraints of the get_all_vec
function:
pub async fn get_all_vec<I>(
db: &Database,
filter: Option<Document>,
options: Option<FindOptions>,
) -> Vec<I>
where
I: MongoDbModel + DeserializeOwned + Unpin + Send + Sync,
{
// impl here
}
As a side note, it may be possible for us to relax some of these trait requirements in a future version. I filed https://jira.mongodb.org/browse/RUST-1358 to track the work for investigating this. Thanks for bringing this to our attention!