Trait sorted_collections::sortedset::SortedSetExt [] [src]

pub trait SortedSetExt<T> where
    T: Clone + Ord
{ type RangeRemove; fn first(&self) -> Option<&T>;
fn first_remove(&mut self) -> Option<T>;
fn last(&self) -> Option<&T>;
fn last_remove(&mut self) -> Option<T>;
fn ceiling(&self, elem: &T) -> Option<&T>;
fn ceiling_remove(&mut self, elem: &T) -> Option<T>;
fn floor(&self, elem: &T) -> Option<&T>;
fn floor_remove(&mut self, elem: &T) -> Option<T>;
fn higher(&self, elem: &T) -> Option<&T>;
fn higher_remove(&mut self, elem: &T) -> Option<T>;
fn lower(&self, elem: &T) -> Option<&T>;
fn lower_remove(&mut self, elem: &T) -> Option<T>;
fn range_remove(
        &mut self,
        _: Bound<&T>,
        to_elem: Bound<&T>
    ) -> Self::RangeRemove; }

An extension trait for a Set whose elements have a defined total ordering. This trait defines convenience methods which take advantage of the set's ordering.

Associated Types

A by-value iterator yielding elements within a given range which have just been removed from this set.

Required Methods

Returns an immutable reference to the first (least) element currently in this set. Returns None if this set is empty.

Examples

extern crate "sorted-collections" as sorted_collections;

use std::collections::BTreeSet;
use sorted_collections::SortedSetExt;

fn main() {
    let set: BTreeSet<u32> = vec![1u32, 2, 3, 4, 5].into_iter().collect();
    assert_eq!(set.first().unwrap(), &1u32);
}

Removes and returns the first (least) element currently in this set. Returns None if this set is empty.

Examples

extern crate "sorted-collections" as sorted_collections;

use std::collections::BTreeSet;
use sorted_collections::SortedSetExt;

fn main() {
    let mut set: BTreeSet<u32> = vec![1u32, 2, 3, 4, 5].into_iter().collect();
    assert_eq!(set.first_remove().unwrap(), 1u32);
    assert_eq!(set.into_iter().collect::<Vec<u32>>(), vec![2u32, 3, 4, 5]);
}

Returns an immutable reference to the last (greatest) element currently in this set. Returns None if this set is empty.

Examples

extern crate "sorted-collections" as sorted_collections;

use std::collections::BTreeSet;
use sorted_collections::SortedSetExt;

fn main() {
    let set: BTreeSet<u32> = vec![1u32, 2, 3, 4, 5].into_iter().collect();
    assert_eq!(set.last().unwrap(), &5u32);
}

Removes and returns the last (greatest) element currently in this set. Returns None if this set is empty.

Examples

extern crate "sorted-collections" as sorted_collections;

use std::collections::BTreeSet;
use sorted_collections::SortedSetExt;

fn main() {
    let mut set: BTreeSet<u32> = vec![1u32, 2, 3, 4, 5].into_iter().collect();
    assert_eq!(set.last_remove().unwrap(), 5u32);
    assert_eq!(set.into_iter().collect::<Vec<u32>>(), vec![1u32, 2, 3, 4]);
}

Returns an immutable reference to the least element in this set greater than or equal to elem. Returns None if there is no such element.

Examples

extern crate "sorted-collections" as sorted_collections;

use std::collections::BTreeSet;
use sorted_collections::SortedSetExt;

fn main() {
    let set: BTreeSet<u32> = vec![1u32, 2, 3, 4, 5].into_iter().collect();
    assert_eq!(set.ceiling(&3).unwrap(), &3u32);
}

Removes and returns the least element in this set greater than or equal to elem. Returns None if there is no such element.

Examples

extern crate "sorted-collections" as sorted_collections;

use std::collections::BTreeSet;
use sorted_collections::SortedSetExt;

fn main() {
    let mut set: BTreeSet<u32> = vec![1u32, 2, 3, 4, 5].into_iter().collect();
    assert_eq!(set.ceiling_remove(&3).unwrap(), 3u32);
    assert_eq!(set.into_iter().collect::<Vec<u32>>(), vec![1u32, 2, 4, 5]);
}

Returns an immutable reference to the greatest element in this set less than or equal to elem. Returns None if there is no such element.

Examples

extern crate "sorted-collections" as sorted_collections;

use std::collections::BTreeSet;
use sorted_collections::SortedSetExt;

fn main() {
    let set: BTreeSet<u32> = vec![1u32, 2, 3, 4, 5].into_iter().collect();
    assert_eq!(set.floor(&3).unwrap(), &3u32);
}

Removes and returns the greatest element in this set less than or equal to elem. Returns None if there is no such element.

Examples

extern crate "sorted-collections" as sorted_collections;

use std::collections::BTreeSet;
use sorted_collections::SortedSetExt;

fn main() {
    let mut set: BTreeSet<u32> = vec![1u32, 2, 3, 4, 5].into_iter().collect();
    assert_eq!(set.floor_remove(&3).unwrap(), 3u32);
    assert_eq!(set.into_iter().collect::<Vec<u32>>(), vec![1u32, 2, 4, 5]);
}

Returns an immutable reference to the least element in this set strictly greater than elem. Returns None if there is no such element.

Examples

extern crate "sorted-collections" as sorted_collections;

use std::collections::BTreeSet;
use sorted_collections::SortedSetExt;

fn main() {
    let set: BTreeSet<u32> = vec![1u32, 2, 3, 4, 5].into_iter().collect();
    assert_eq!(set.higher(&3).unwrap(), &4u32);
}

Removes and returns the least element in this set strictly greater than elem. Returns None if there is no such element.

Examples

extern crate "sorted-collections" as sorted_collections;

use std::collections::BTreeSet;
use sorted_collections::SortedSetExt;

fn main() {
    let mut set: BTreeSet<u32> = vec![1u32, 2, 3, 4, 5].into_iter().collect();
    assert_eq!(set.higher_remove(&3).unwrap(), 4u32);
    assert_eq!(set.into_iter().collect::<Vec<u32>>(), vec![1u32, 2, 3, 5]);
}

Returns an immutable reference to the greatest element in this set strictly less than elem. Returns None if there is no such element.

Examples

extern crate "sorted-collections" as sorted_collections;

use std::collections::BTreeSet;
use sorted_collections::SortedSetExt;

fn main() {
    let set: BTreeSet<u32> = vec![1u32, 2, 3, 4, 5].into_iter().collect();
    assert_eq!(set.lower(&3).unwrap(), &2u32);
}

Removes and returns the greatest element in this set strictly less than elem. Returns None if there is no such element.

Examples

extern crate "sorted-collections" as sorted_collections;

use std::collections::BTreeSet;
use sorted_collections::SortedSetExt;

fn main() {
    let mut set: BTreeSet<u32> = vec![1u32, 2, 3, 4, 5].into_iter().collect();
    assert_eq!(set.lower_remove(&3).unwrap(), 2u32);
    assert_eq!(set.into_iter().collect::<Vec<u32>>(), vec![1u32, 3, 4, 5]);
}

Removes the elements of this set in the range starting at from_elem and ending at to_elem, and returns a double-ended by-value iterator yielding the removed elements.

If from_elem is Unbounded, then it will be treated as "negative infinity", and if to_elem is Unbounded, then it will be treated as "positive infinity". Thus, range_remove(Unbounded, Unbounded) will clear the set and return a by-value iterator over all of the elements which were in it.

Examples

This example is not tested
extern crate "sorted-collections" as sorted_collections;

use std::collections::Bound::{Excluded, Included};
use std::collections::BTreeSet;
use sorted_collections::SortedSetExt;

fn main() {
    let mut set: BTreeSet<u32> = vec![1u32, 2, 3, 4, 5].into_iter().collect();
    assert_eq!(set.range_remove(Included(&2), Excluded(&4)).collect::<Vec<u32>>(),
        vec![2u32, 3]);
    assert_eq!(set.into_iter().collect::<Vec<u32>>(), vec![1u32, 4, 5]);
}

Implementations on Foreign Types

impl<'a, T> SortedSetExt<T> for BTreeSet<T> where
    T: Clone + Ord
[src]

[src]

[src]

[src]

[src]

[src]

[src]

[src]

[src]

[src]

[src]

[src]

[src]

Important traits for BTreeSetRangeRemove<T>
[src]

Implementors