extra_pointers 0.1.4

Box, Rc and Arc do not suffice? Take some extra
//use std::fmt::{Debug, Display};
use ::{IrcWrapped, AircWrapped, Irc, IntrusiveReferenceCounted};
use std::mem;
use std::any::Any;

#[derive(Debug)]
struct A;

impl Drop for A {
	fn drop(&mut self) {
		println!("A at {:p} is deleted", self);
	}
}

#[test]
fn smoke_test() {
	let irc1 = IrcWrapped::new_irc([A, A]) as Irc<IrcWrapped<[A;2]>>;
	println!("Created IrcWrapped{:?}", irc1);

	let irc2 = irc1.clone() as Irc<IntrusiveReferenceCounted>;
	println!("Cloned IrcWrapped {:?}", irc1);
	mem::drop(irc1);
	println!("Dropped IrcWrapped");
	mem::drop(irc2);
	println!("Dropped IrcWrapped");


	let irc1 = AircWrapped::new_irc([A]);
	println!("Created AircWrapped {:?}", irc1);

	let irc2 = irc1.clone() as Irc<AircWrapped<[A]>>;
	println!("Cloned AircWrapped {:?}", irc1);
	mem::drop(irc1);
	println!("Dropped AircWrapped {:?}", irc2);
	mem::drop(irc2);
	println!("Dropped AircWrapped");
}