use std::marker::PhantomData; use dos_uid_derive::UID; use interface::{Data, Read, Size, Update, Write}; struct Q(PhantomData); enum ID {} #[derive(UID)] #[uid(data = Q, port = 9999)] enum TU {} struct Client {} impl Update for Client {} impl Write for Client { fn write(&mut self) -> Option> { None } } impl Read for Client { fn read(&mut self, _data: Data) {} } impl Size for Client { fn len(&self) -> usize { 1234 } } #[derive(UID)] #[alias(name = TU, client = Client, traits = Write, Read, Size)] enum TUT {} fn main() { let mut client = Client {}; >::write(&mut client); >::write(&mut client); let q = Q::(PhantomData); >::read(&mut client, Data::::new(q)); let qq = Q::(PhantomData); >::read(&mut client, Data::::new(qq)); println!("TUT size: {}", >::len(&client)) }