Add more Bson From<> implementations for better ergonomics. #130
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR new
From<>
implementations to Bson to coverVec<T>
, &[T] objects, and &T (where T implements Into + Clone). Comparable impls exist in serde_json::Value, which is, I think, a good reference point for how the Bson type should operate. Having these impls in place eliminates a lot of manual cloning.Caveat: When using this branch in the mongodb crate, there is one type inference break: Because the
From<Array>
implementation (==From<Vec<Bson>>
) was replaced byFrom<Vec<T>> where T: Into<Bson>
,Bson::from(Vec::new())
now complains that it needs to know the full type ofVec::new()
. The problem is resolved by usingBson::Array(Vec::new())
instead ofBson::from
. It also only shows up in case of a Vec of unspecified type, which means it should not affect conversion from a struct member in most cases. Again, this behavior is in line with howserde_json::Value
operates.