flexmesh 0.1.3

Mutable mesh structure with persistent adjacency data and n-gon support
Documentation
use std::marker::PhantomData;

pub type NumType = u32;

#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
pub struct Key<T> {
    ival: NumType,
    phantom: PhantomData<T>
}

impl<T> Key<T> {
    pub fn invalid() -> Key<T> {
        Key { ival: 0xffffffff, phantom: PhantomData }
    }

    pub fn new(val: NumType) -> Key<T> {
        Key { ival: val, phantom: PhantomData }
    }

    pub fn valid(&self) -> bool {
        self.ival == 0xffffffff
    }

    pub fn value(&self) -> NumType {
        if self.valid() {
            self.ival
        } else {
            panic!("invalid key");
        }
    }
}