use std::os::fd::RawFd; use iddqd::BiHashItem; use mio::Token; #[derive(Copy)] #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct TokenFd { pub token: Token, pub fd: RawFd, } impl BiHashItem for TokenFd { type K1<'a> = Token; type K2<'a> = RawFd; fn key1(&self) -> Token { self.token } fn key2(&self) -> RawFd { self.fd } iddqd::bi_upcast!(); } impl From for (Token, RawFd) { fn from(TokenFd { token, fd }: TokenFd) -> (Token, RawFd) { (token, fd) } } impl From<(Token, RawFd)> for TokenFd { fn from((token, fd): (Token, RawFd)) -> TokenFd { TokenFd { token, fd } } }