-
Notifications
You must be signed in to change notification settings - Fork 146
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for dedup, dedup_by, and dedup_by_key #72
Conversation
This pull request adds support for dedup, dedup_by, and dedup_by_key as requested in #2 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks good, thanks! One comment below:
lib.rs
Outdated
@@ -91,13 +91,37 @@ pub trait VecLike<T>: | |||
|
|||
/// Append an element to the vector. | |||
fn push(&mut self, value: T); | |||
/// Removes consecutive repeated elements. | |||
fn dedup(&mut self) where T: PartialEq<T>; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure we want to add these as trait methods. Currently this trait is very minimal; adding these methods would be a breaking change and a bit of a burden for other types that implement it. (The use case for this trait is questionable anyway, and I think we might deprecate and remove it instead.)
If we did add these methods, then we should probably also add truncate
, and then provide default implementations of the dedup
methods based on that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have added a commit to remove these methods from the VecLike trait.
@bors-servo r+ Thanks! |
📌 Commit 7ee6c59 has been approved by |
Add support for dedup, dedup_by, and dedup_by_key <!-- Reviewable:start --> This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/rust-smallvec/72) <!-- Reviewable:end -->
☀️ Test successful - status-travis |
Version 0.6.0 Includes these changes since the last release: * Breaking change: Remove deprecated `SmallVecN` type aliases and `push_all_move` method (#77) * Breaking change: Make `retain` pass `&mut T` to its predicate (#61) * Add new methods `dedup`, `dedup_by`, and `dedup_by_key` (#72) * Deprecate the `VecLike` trait in favor of standard library traits (#74) * Optimize the `Clone` and `Deserialize` implementations to avoid unnecessary reallocation (#71) * Optimize `extend_from_slice` and `insert_from_slice` to use `copy_nonoverlapping` (#76) * Include the text of the Mozilla Public License in the source repo (#69) * Improved documentation (#75) <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/rust-smallvec/78) <!-- Reviewable:end -->
This change is![Reviewable](https://camo.githubusercontent.com/1541c4039185914e83657d3683ec25920c672c6c5c7ab4240ee7bff601adec0b/68747470733a2f2f72657669657761626c652e696f2f7265766965775f627574746f6e2e737667)