39 lines
691 B
Rust
39 lines
691 B
Rust
|
|
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<TokenFd> 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 }
|
||
|
|
}
|
||
|
|
}
|