[][src]Trait map_trait::set::Set

pub trait Set<T> {
    fn contains<Q: ?Sized>(&self, value: &Q) -> bool
    where
        T: Borrow<Q>,
        Q: Hash + Eq + Ord
;
fn insert(&mut self, value: T) -> bool; }

A generic Set trait

Examples

This is a toy example of a set which reexposes an inner set and stores the most recent value to be inserted. Because the LastInsertSet implements Set, it can be seamlessly used as a replacement for other sets.

#![allow(incomplete_features)]
#![feature(generic_associated_types)]
use std::borrow::Borrow;
use std::hash::Hash;
use std::collections::HashSet;

use map_trait::set::Set;
struct LastInsertSet<T, S> {
    inner_set: S,
    last_value: T,
}

impl<T, S> LastInsertSet<T, S>
where
    T: Copy,
    S: Set<T>
{
    fn new(mut set: S, value: T) -> Self {
        set.insert(value);
        LastInsertSet {
            inner_set: set,
            last_value: value,
        }
    }

    fn get_last_insert(&self) -> &T {
        &self.last_value
    }
}

impl<T, S> Set<T> for LastInsertSet<T, S>
where
    T: Copy,
    S: Set<T>
{

    #[inline]
    fn contains<Q: ?Sized>(&self, value: &Q) -> bool
    where
        T: Borrow<Q>,
        Q: Hash + Eq + Ord
    {
        self.inner_set.contains(value)
    }

    fn insert(&mut self, value: T) -> bool
    {
        self.last_value = value;
        self.inner_set.insert(value)
    }

}

    let mut set = LastInsertSet::new(HashSet::new(), 0);
    assert_eq!(set.get_last_insert(), &0);
    assert!(set.contains(&0));
    assert!(set.insert(1));
    assert!(set.contains(&1));
    assert_eq!(set.get_last_insert(), &1);

Required methods

fn contains<Q: ?Sized>(&self, value: &Q) -> bool where
    T: Borrow<Q>,
    Q: Hash + Eq + Ord

fn insert(&mut self, value: T) -> bool

Loading content...

Implementations on Foreign Types

impl<T, S> Set<T> for HashSet<T, S> where
    T: Hash + Eq,
    S: BuildHasher
[src]

impl<T> Set<T> for BTreeSet<T> where
    T: Ord
[src]

Loading content...

Implementors

Loading content...