Struct cargo_feature_matrix::features::FeatureMatrix
source · [−]pub struct FeatureMatrix<'f>(_);Methods from Deref<Target = BTreeSet<FeatureSet<'f>>>
1.17.0 · sourcepub fn range<K, R>(&self, range: R) -> Range<'_, T> where
K: Ord + ?Sized,
T: Borrow<K> + Ord,
R: RangeBounds<K>,
pub fn range<K, R>(&self, range: R) -> Range<'_, T> where
K: Ord + ?Sized,
T: Borrow<K> + Ord,
R: RangeBounds<K>,
Constructs a double-ended iterator over a sub-range of elements in the set.
The simplest way is to use the range syntax min..max, thus range(min..max) will
yield elements from min (inclusive) to max (exclusive).
The range may also be entered as (Bound<T>, Bound<T>), so for example
range((Excluded(4), Included(10))) will yield a left-exclusive, right-inclusive
range from 4 to 10.
Examples
use std::collections::BTreeSet;
use std::ops::Bound::Included;
let mut set = BTreeSet::new();
set.insert(3);
set.insert(5);
set.insert(8);
for &elem in set.range((Included(&4), Included(&8))) {
println!("{}", elem);
}
assert_eq!(Some(&5), set.range(4..).next());1.0.0 · sourcepub fn difference(&'a self, other: &'a BTreeSet<T>) -> Difference<'a, T> where
T: Ord,
pub fn difference(&'a self, other: &'a BTreeSet<T>) -> Difference<'a, T> where
T: Ord,
Visits the elements representing the difference,
i.e., the elements that are in self but not in other,
in ascending order.
Examples
use std::collections::BTreeSet;
let mut a = BTreeSet::new();
a.insert(1);
a.insert(2);
let mut b = BTreeSet::new();
b.insert(2);
b.insert(3);
let diff: Vec<_> = a.difference(&b).cloned().collect();
assert_eq!(diff, [1]);1.0.0 · sourcepub fn symmetric_difference(
&'a self,
other: &'a BTreeSet<T>
) -> SymmetricDifference<'a, T> where
T: Ord,
pub fn symmetric_difference(
&'a self,
other: &'a BTreeSet<T>
) -> SymmetricDifference<'a, T> where
T: Ord,
Visits the elements representing the symmetric difference,
i.e., the elements that are in self or in other but not in both,
in ascending order.
Examples
use std::collections::BTreeSet;
let mut a = BTreeSet::new();
a.insert(1);
a.insert(2);
let mut b = BTreeSet::new();
b.insert(2);
b.insert(3);
let sym_diff: Vec<_> = a.symmetric_difference(&b).cloned().collect();
assert_eq!(sym_diff, [1, 3]);1.0.0 · sourcepub fn intersection(&'a self, other: &'a BTreeSet<T>) -> Intersection<'a, T> where
T: Ord,
pub fn intersection(&'a self, other: &'a BTreeSet<T>) -> Intersection<'a, T> where
T: Ord,
Visits the elements representing the intersection,
i.e., the elements that are both in self and other,
in ascending order.
Examples
use std::collections::BTreeSet;
let mut a = BTreeSet::new();
a.insert(1);
a.insert(2);
let mut b = BTreeSet::new();
b.insert(2);
b.insert(3);
let intersection: Vec<_> = a.intersection(&b).cloned().collect();
assert_eq!(intersection, [2]);1.0.0 · sourcepub fn union(&'a self, other: &'a BTreeSet<T>) -> Union<'a, T> where
T: Ord,
pub fn union(&'a self, other: &'a BTreeSet<T>) -> Union<'a, T> where
T: Ord,
Visits the elements representing the union,
i.e., all the elements in self or other, without duplicates,
in ascending order.
Examples
use std::collections::BTreeSet;
let mut a = BTreeSet::new();
a.insert(1);
let mut b = BTreeSet::new();
b.insert(2);
let union: Vec<_> = a.union(&b).cloned().collect();
assert_eq!(union, [1, 2]);1.0.0 · sourcepub fn clear(&mut self)
pub fn clear(&mut self)
Clears the set, removing all elements.
Examples
use std::collections::BTreeSet;
let mut v = BTreeSet::new();
v.insert(1);
v.clear();
assert!(v.is_empty());1.0.0 · sourcepub fn contains<Q>(&self, value: &Q) -> bool where
T: Borrow<Q> + Ord,
Q: Ord + ?Sized,
pub fn contains<Q>(&self, value: &Q) -> bool where
T: Borrow<Q> + Ord,
Q: Ord + ?Sized,
Returns true if the set contains an element equal to the value.
The value may be any borrowed form of the set’s element type, but the ordering on the borrowed form must match the ordering on the element type.
Examples
use std::collections::BTreeSet;
let set = BTreeSet::from([1, 2, 3]);
assert_eq!(set.contains(&1), true);
assert_eq!(set.contains(&4), false);1.9.0 · sourcepub fn get<Q>(&self, value: &Q) -> Option<&T> where
T: Borrow<Q> + Ord,
Q: Ord + ?Sized,
pub fn get<Q>(&self, value: &Q) -> Option<&T> where
T: Borrow<Q> + Ord,
Q: Ord + ?Sized,
Returns a reference to the element in the set, if any, that is equal to the value.
The value may be any borrowed form of the set’s element type, but the ordering on the borrowed form must match the ordering on the element type.
Examples
use std::collections::BTreeSet;
let set = BTreeSet::from([1, 2, 3]);
assert_eq!(set.get(&2), Some(&2));
assert_eq!(set.get(&4), None);1.0.0 · sourcepub fn is_disjoint(&self, other: &BTreeSet<T>) -> bool where
T: Ord,
pub fn is_disjoint(&self, other: &BTreeSet<T>) -> bool where
T: Ord,
Returns true if self has no elements in common with other.
This is equivalent to checking for an empty intersection.
Examples
use std::collections::BTreeSet;
let a = BTreeSet::from([1, 2, 3]);
let mut b = BTreeSet::new();
assert_eq!(a.is_disjoint(&b), true);
b.insert(4);
assert_eq!(a.is_disjoint(&b), true);
b.insert(1);
assert_eq!(a.is_disjoint(&b), false);1.0.0 · sourcepub fn is_subset(&self, other: &BTreeSet<T>) -> bool where
T: Ord,
pub fn is_subset(&self, other: &BTreeSet<T>) -> bool where
T: Ord,
Returns true if the set is a subset of another,
i.e., other contains at least all the elements in self.
Examples
use std::collections::BTreeSet;
let sup = BTreeSet::from([1, 2, 3]);
let mut set = BTreeSet::new();
assert_eq!(set.is_subset(&sup), true);
set.insert(2);
assert_eq!(set.is_subset(&sup), true);
set.insert(4);
assert_eq!(set.is_subset(&sup), false);1.0.0 · sourcepub fn is_superset(&self, other: &BTreeSet<T>) -> bool where
T: Ord,
pub fn is_superset(&self, other: &BTreeSet<T>) -> bool where
T: Ord,
Returns true if the set is a superset of another,
i.e., self contains at least all the elements in other.
Examples
use std::collections::BTreeSet;
let sub = BTreeSet::from([1, 2]);
let mut set = BTreeSet::new();
assert_eq!(set.is_superset(&sub), false);
set.insert(0);
set.insert(1);
assert_eq!(set.is_superset(&sub), false);
set.insert(2);
assert_eq!(set.is_superset(&sub), true);sourcepub fn first(&self) -> Option<&T> where
T: Ord,
🔬 This is a nightly-only experimental API. (map_first_last)
pub fn first(&self) -> Option<&T> where
T: Ord,
map_first_last)Returns a reference to the first element in the set, if any. This element is always the minimum of all elements in the set.
Examples
Basic usage:
#![feature(map_first_last)]
use std::collections::BTreeSet;
let mut set = BTreeSet::new();
assert_eq!(set.first(), None);
set.insert(1);
assert_eq!(set.first(), Some(&1));
set.insert(2);
assert_eq!(set.first(), Some(&1));sourcepub fn last(&self) -> Option<&T> where
T: Ord,
🔬 This is a nightly-only experimental API. (map_first_last)
pub fn last(&self) -> Option<&T> where
T: Ord,
map_first_last)Returns a reference to the last element in the set, if any. This element is always the maximum of all elements in the set.
Examples
Basic usage:
#![feature(map_first_last)]
use std::collections::BTreeSet;
let mut set = BTreeSet::new();
assert_eq!(set.last(), None);
set.insert(1);
assert_eq!(set.last(), Some(&1));
set.insert(2);
assert_eq!(set.last(), Some(&2));sourcepub fn pop_first(&mut self) -> Option<T> where
T: Ord,
🔬 This is a nightly-only experimental API. (map_first_last)
pub fn pop_first(&mut self) -> Option<T> where
T: Ord,
map_first_last)Removes the first element from the set and returns it, if any. The first element is always the minimum element in the set.
Examples
#![feature(map_first_last)]
use std::collections::BTreeSet;
let mut set = BTreeSet::new();
set.insert(1);
while let Some(n) = set.pop_first() {
assert_eq!(n, 1);
}
assert!(set.is_empty());sourcepub fn pop_last(&mut self) -> Option<T> where
T: Ord,
🔬 This is a nightly-only experimental API. (map_first_last)
pub fn pop_last(&mut self) -> Option<T> where
T: Ord,
map_first_last)Removes the last element from the set and returns it, if any. The last element is always the maximum element in the set.
Examples
#![feature(map_first_last)]
use std::collections::BTreeSet;
let mut set = BTreeSet::new();
set.insert(1);
while let Some(n) = set.pop_last() {
assert_eq!(n, 1);
}
assert!(set.is_empty());1.0.0 · sourcepub fn insert(&mut self, value: T) -> bool where
T: Ord,
pub fn insert(&mut self, value: T) -> bool where
T: Ord,
Adds a value to the set.
If the set did not have an equal element present, true is returned.
If the set did have an equal element present, false is returned, and
the entry is not updated. See the module-level documentation for more.
Examples
use std::collections::BTreeSet;
let mut set = BTreeSet::new();
assert_eq!(set.insert(2), true);
assert_eq!(set.insert(2), false);
assert_eq!(set.len(), 1);1.9.0 · sourcepub fn replace(&mut self, value: T) -> Option<T> where
T: Ord,
pub fn replace(&mut self, value: T) -> Option<T> where
T: Ord,
Adds a value to the set, replacing the existing element, if any, that is equal to the value. Returns the replaced element.
Examples
use std::collections::BTreeSet;
let mut set = BTreeSet::new();
set.insert(Vec::<i32>::new());
assert_eq!(set.get(&[][..]).unwrap().capacity(), 0);
set.replace(Vec::with_capacity(10));
assert_eq!(set.get(&[][..]).unwrap().capacity(), 10);1.0.0 · sourcepub fn remove<Q>(&mut self, value: &Q) -> bool where
T: Borrow<Q> + Ord,
Q: Ord + ?Sized,
pub fn remove<Q>(&mut self, value: &Q) -> bool where
T: Borrow<Q> + Ord,
Q: Ord + ?Sized,
If the set contains an element equal to the value, removes it from the set and drops it. Returns whether such an element was present.
The value may be any borrowed form of the set’s element type, but the ordering on the borrowed form must match the ordering on the element type.
Examples
use std::collections::BTreeSet;
let mut set = BTreeSet::new();
set.insert(2);
assert_eq!(set.remove(&2), true);
assert_eq!(set.remove(&2), false);1.9.0 · sourcepub fn take<Q>(&mut self, value: &Q) -> Option<T> where
T: Borrow<Q> + Ord,
Q: Ord + ?Sized,
pub fn take<Q>(&mut self, value: &Q) -> Option<T> where
T: Borrow<Q> + Ord,
Q: Ord + ?Sized,
Removes and returns the element in the set, if any, that is equal to the value.
The value may be any borrowed form of the set’s element type, but the ordering on the borrowed form must match the ordering on the element type.
Examples
use std::collections::BTreeSet;
let mut set = BTreeSet::from([1, 2, 3]);
assert_eq!(set.take(&2), Some(2));
assert_eq!(set.take(&2), None);1.53.0 · sourcepub fn retain<F>(&mut self, f: F) where
T: Ord,
F: FnMut(&T) -> bool,
pub fn retain<F>(&mut self, f: F) where
T: Ord,
F: FnMut(&T) -> bool,
Retains only the elements specified by the predicate.
In other words, remove all elements e such that f(&e) returns false.
The elements are visited in ascending order.
Examples
use std::collections::BTreeSet;
let mut set = BTreeSet::from([1, 2, 3, 4, 5, 6]);
// Keep only the even numbers.
set.retain(|&k| k % 2 == 0);
assert!(set.iter().eq([2, 4, 6].iter()));1.11.0 · sourcepub fn append(&mut self, other: &mut BTreeSet<T>) where
T: Ord,
pub fn append(&mut self, other: &mut BTreeSet<T>) where
T: Ord,
Moves all elements from other into Self, leaving other empty.
Examples
use std::collections::BTreeSet;
let mut a = BTreeSet::new();
a.insert(1);
a.insert(2);
a.insert(3);
let mut b = BTreeSet::new();
b.insert(3);
b.insert(4);
b.insert(5);
a.append(&mut b);
assert_eq!(a.len(), 5);
assert_eq!(b.len(), 0);
assert!(a.contains(&1));
assert!(a.contains(&2));
assert!(a.contains(&3));
assert!(a.contains(&4));
assert!(a.contains(&5));1.11.0 · sourcepub fn split_off<Q>(&mut self, value: &Q) -> BTreeSet<T> where
Q: Ord + ?Sized,
T: Borrow<Q> + Ord,
pub fn split_off<Q>(&mut self, value: &Q) -> BTreeSet<T> where
Q: Ord + ?Sized,
T: Borrow<Q> + Ord,
Splits the collection into two at the value. Returns a new collection with all elements greater than or equal to the value.
Examples
Basic usage:
use std::collections::BTreeSet;
let mut a = BTreeSet::new();
a.insert(1);
a.insert(2);
a.insert(3);
a.insert(17);
a.insert(41);
let b = a.split_off(&3);
assert_eq!(a.len(), 2);
assert_eq!(b.len(), 3);
assert!(a.contains(&1));
assert!(a.contains(&2));
assert!(b.contains(&3));
assert!(b.contains(&17));
assert!(b.contains(&41));sourcepub fn drain_filter<'a, F>(&'a mut self, pred: F) -> DrainFilter<'a, T, F> where
T: Ord,
F: 'a + FnMut(&T) -> bool,
🔬 This is a nightly-only experimental API. (btree_drain_filter)
pub fn drain_filter<'a, F>(&'a mut self, pred: F) -> DrainFilter<'a, T, F> where
T: Ord,
F: 'a + FnMut(&T) -> bool,
btree_drain_filter)Creates an iterator that visits all elements in ascending order and uses a closure to determine if an element should be removed.
If the closure returns true, the element is removed from the set and
yielded. If the closure returns false, or panics, the element remains
in the set and will not be yielded.
If the iterator is only partially consumed or not consumed at all, each
of the remaining elements is still subjected to the closure and removed
and dropped if it returns true.
It is unspecified how many more elements will be subjected to the
closure if a panic occurs in the closure, or if a panic occurs while
dropping an element, or if the DrainFilter itself is leaked.
Examples
Splitting a set into even and odd values, reusing the original set:
#![feature(btree_drain_filter)]
use std::collections::BTreeSet;
let mut set: BTreeSet<i32> = (0..8).collect();
let evens: BTreeSet<_> = set.drain_filter(|v| v % 2 == 0).collect();
let odds = set;
assert_eq!(evens.into_iter().collect::<Vec<_>>(), vec![0, 2, 4, 6]);
assert_eq!(odds.into_iter().collect::<Vec<_>>(), vec![1, 3, 5, 7]);1.0.0 · sourcepub fn iter(&self) -> Iter<'_, T>
pub fn iter(&self) -> Iter<'_, T>
Gets an iterator that visits the elements in the BTreeSet in ascending
order.
Examples
use std::collections::BTreeSet;
let set = BTreeSet::from([1, 2, 3]);
let mut set_iter = set.iter();
assert_eq!(set_iter.next(), Some(&1));
assert_eq!(set_iter.next(), Some(&2));
assert_eq!(set_iter.next(), Some(&3));
assert_eq!(set_iter.next(), None);Values returned by the iterator are returned in ascending order:
use std::collections::BTreeSet;
let set = BTreeSet::from([3, 1, 2]);
let mut set_iter = set.iter();
assert_eq!(set_iter.next(), Some(&1));
assert_eq!(set_iter.next(), Some(&2));
assert_eq!(set_iter.next(), Some(&3));
assert_eq!(set_iter.next(), None);Trait Implementations
sourceimpl<'f> AsMut<BTreeSet<FeatureSet<'f>>> for FeatureMatrix<'f>
impl<'f> AsMut<BTreeSet<FeatureSet<'f>>> for FeatureMatrix<'f>
sourcefn as_mut(&mut self) -> &mut BTreeSet<FeatureSet<'f>>
fn as_mut(&mut self) -> &mut BTreeSet<FeatureSet<'f>>
Performs the conversion.
sourceimpl<'f> AsRef<BTreeSet<FeatureSet<'f>>> for FeatureMatrix<'f>
impl<'f> AsRef<BTreeSet<FeatureSet<'f>>> for FeatureMatrix<'f>
sourcefn as_ref(&self) -> &BTreeSet<FeatureSet<'f>>
fn as_ref(&self) -> &BTreeSet<FeatureSet<'f>>
Performs the conversion.
sourceimpl<'f> Clone for FeatureMatrix<'f>
impl<'f> Clone for FeatureMatrix<'f>
sourcefn clone(&self) -> FeatureMatrix<'f>
fn clone(&self) -> FeatureMatrix<'f>
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source. Read more
sourceimpl<'f> Debug for FeatureMatrix<'f>
impl<'f> Debug for FeatureMatrix<'f>
sourceimpl<'f> Default for FeatureMatrix<'f>
impl<'f> Default for FeatureMatrix<'f>
sourcefn default() -> FeatureMatrix<'f>
fn default() -> FeatureMatrix<'f>
Returns the “default value” for a type. Read more
sourceimpl<'f> Deref for FeatureMatrix<'f>
impl<'f> Deref for FeatureMatrix<'f>
sourceimpl<'f> DerefMut for FeatureMatrix<'f>
impl<'f> DerefMut for FeatureMatrix<'f>
sourceimpl<'de: 'f, 'f> Deserialize<'de> for FeatureMatrix<'f>
impl<'de: 'f, 'f> Deserialize<'de> for FeatureMatrix<'f>
sourcefn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl<'f> FromIterator<FeatureSet<'f>> for FeatureMatrix<'f>
impl<'f> FromIterator<FeatureSet<'f>> for FeatureMatrix<'f>
sourcefn from_iter<T: IntoIterator<Item = FeatureSet<'f>>>(iter: T) -> Self
fn from_iter<T: IntoIterator<Item = FeatureSet<'f>>>(iter: T) -> Self
Creates a value from an iterator. Read more
sourceimpl<'f> IntoIterator for FeatureMatrix<'f>
impl<'f> IntoIterator for FeatureMatrix<'f>
sourceimpl<'f> Serialize for FeatureMatrix<'f>
impl<'f> Serialize for FeatureMatrix<'f>
Auto Trait Implementations
impl<'f> RefUnwindSafe for FeatureMatrix<'f>
impl<'f> Send for FeatureMatrix<'f>
impl<'f> Sync for FeatureMatrix<'f>
impl<'f> Unpin for FeatureMatrix<'f>
impl<'f> UnwindSafe for FeatureMatrix<'f>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into)Uses borrowed data to replace owned data, usually by cloning. Read more