Trait intrusive_collections::rbtree::TreeAdaptor [] [src]

pub trait TreeAdaptor<'a>: Adaptor<Link> {
    type Key: Ord;
    fn get_key(&self, container: &'a Self::Container) -> Self::Key;
}

Trait which provides a way of extracting a key from an intrusive object. This key is used to maintain all elements in the tree in increasing order. The key can be returned either as a reference or as a value.

Examples

#[macro_use]
extern crate intrusive_collections;
use intrusive_collections::{rbtree, TreeAdaptor};

struct S {
    link: rbtree::Link,
    key: u32,
    value: u64,
}

intrusive_adaptor!(MyAdaptor = S { link : rbtree::Link });
impl<'a> TreeAdaptor<'a> for MyAdaptor {
    type Key = u32;
    fn get_key(&self, s: &'a S) -> u32 { s.key }
}

// Alternative implementation returning the key by reference
intrusive_adaptor!(MyAdaptor2 = S { link : rbtree::Link });
impl<'a> TreeAdaptor<'a> for MyAdaptor2 {
    type Key = &'a u32;
    fn get_key(&self, s: &'a S) -> &'a u32 { &s.key }
}

Associated Types

type Key: Ord

Type of the key returned by get_key.

Required Methods

fn get_key(&self, container: &'a Self::Container) -> Self::Key

Gets the key for the given object.

Implementors