Commit 5c47f725 authored by cypherpunks's avatar cypherpunks
Browse files

rust/protover: delete ProtoSet::retain

As the comment noted, it was horribly inefficient.
parent c613d551
Loading
Loading
Loading
Loading
+0 −30
Original line number Diff line number Diff line
@@ -242,36 +242,6 @@ impl ProtoSet {
        false
    }

    /// Retain only the `Version`s in this `ProtoSet` for which the predicate
    /// `F` returns `true`.
    ///
    /// # Examples
    ///
    /// ```
    /// # use protover::errors::ProtoverError;
    /// use protover::protoset::ProtoSet;
    ///
    /// # fn do_test() -> Result<bool, ProtoverError> {
    /// let mut protoset: ProtoSet = "1,3-5,9".parse()?;
    ///
    /// // Keep only versions less than or equal to 8:
    /// protoset.retain(|x| x <= &8);
    ///
    /// assert_eq!(protoset.expand(), vec![1, 3, 4, 5]);
    /// #
    /// # Ok(true)
    /// # }
    /// # fn main() { do_test(); }  // wrap the test so we can use the ? operator
    /// ```
    // XXX we could probably do something more efficient here. —isis
    pub fn retain<F>(&mut self, f: F)
        where F: FnMut(&Version) -> bool
    {
        let mut expanded: Vec<Version> = self.clone().expand();
        expanded.retain(f);
        *self = expanded.into();
    }

    /// Returns all the `Version`s in `self` which are not also in the `other`
    /// `ProtoSet`.
    ///