Rollup merge of #40325 - eddyb:pr38143, r=alexcrichton

Added remove_from to vec.rs (#38143)

Turns out that if you push to someone's PR branch and cause the PR to close, you lose delegation 😞.

@madseagames I'm really sorry about that 😭
This commit is contained in:
Ariel Ben-Yehuda 2017-03-08 20:54:05 +02:00 committed by GitHub
commit 99aad021ce
1 changed files with 21 additions and 0 deletions

View File

@ -1335,6 +1335,27 @@ impl<T: PartialEq> Vec<T> {
pub fn dedup(&mut self) {
self.dedup_by(|a, b| a == b)
}
/// Removes the first instance of `item` from the vector if the item exists.
///
/// # Examples
///
/// ```
///# #![feature(vec_remove_item)]
/// let mut vec = vec![1, 2, 3, 1];
///
/// vec.remove_item(&1);
///
/// assert_eq!(vec, vec![2, 3, 1]);
/// ```
#[unstable(feature = "vec_remove_item", reason = "recently added", issue = "40062")]
pub fn remove_item(&mut self, item: &T) -> Option<T> {
let pos = match self.iter().position(|x| *x == *item) {
Some(x) => x,
None => return None,
};
Some(self.remove(pos))
}
}
////////////////////////////////////////////////////////////////////////////////