unique-pointer 0.8.1

Provides the `UniquePointer` data structure that makes extensive use of `unsafe` rust to provide a shared pointer across other data structures.
Documentation
use k9::assert_equal;
use unique_pointer::RefCounter;

#[test]
fn test_refcounter_incr_decr_read() {
    let counter = RefCounter::new();
    assert_equal!(counter.read(), 1);
    counter.incr();
    assert_equal!(counter.read(), 2);
    counter.incr();
    assert_equal!(counter.read(), 3);
    {
        let clone = counter.clone();
        clone.incr();
        assert_equal!(counter.read(), 4);
        assert_equal!(clone.read(), 4);
    }
    assert_equal!(counter.read(), 4);
    counter.decr();
    assert_equal!(counter.read(), 3);
    counter.decr();
    assert_equal!(counter.read(), 2);
    counter.decr();
    assert_equal!(counter.read(), 1);
    counter.decr();
    assert_equal!(counter.read(), 0);
    counter.decr();
    assert_equal!(counter.read(), 0);
}
#[test]
fn test_refcounter_deref() {
    let counter = RefCounter::new();
    assert_equal!(counter.read(), 1);
    counter.incr();
    assert_equal!(counter.read(), 2);
    counter.incr();
    assert_equal!(counter.read(), 3);
    let refs: usize = *counter;
    assert_equal!(refs, 3);
}
#[test]
fn test_refcounter_add_assign() {
    let mut counter = RefCounter::new();
    assert_equal!(counter.read(), 1);
    counter += 2;
    assert_equal!(counter.read(), 3);
    counter -= 1;
    assert_equal!(counter.read(), 2);
    counter -= 1;
    assert_equal!(counter.read(), 1);
    counter += 1;
    let refs: usize = *counter;
    assert_equal!(refs, 2);
}