(function() {var implementors = {};
implementors["mio"] = [{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/sys/unix/ext/io/trait.IntoRawFd.html\" title=\"trait std::sys::unix::ext::io::IntoRawFd\">IntoRawFd</a> for <a class=\"struct\" href=\"mio/unix/pipe/struct.Sender.html\" title=\"struct mio::unix::pipe::Sender\">Sender</a>","synthetic":false,"types":["mio::sys::unix::pipe::Sender"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/sys/unix/ext/io/trait.IntoRawFd.html\" title=\"trait std::sys::unix::ext::io::IntoRawFd\">IntoRawFd</a> for <a class=\"struct\" href=\"mio/unix/pipe/struct.Receiver.html\" title=\"struct mio::unix::pipe::Receiver\">Receiver</a>","synthetic":false,"types":["mio::sys::unix::pipe::Receiver"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/sys/unix/ext/io/trait.IntoRawFd.html\" title=\"trait std::sys::unix::ext::io::IntoRawFd\">IntoRawFd</a> for <a class=\"struct\" href=\"mio/net/struct.TcpListener.html\" title=\"struct mio::net::TcpListener\">TcpListener</a>","synthetic":false,"types":["mio::net::tcp::listener::TcpListener"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/sys/unix/ext/io/trait.IntoRawFd.html\" title=\"trait std::sys::unix::ext::io::IntoRawFd\">IntoRawFd</a> for <a class=\"struct\" href=\"mio/net/struct.TcpSocket.html\" title=\"struct mio::net::TcpSocket\">TcpSocket</a>","synthetic":false,"types":["mio::net::tcp::socket::TcpSocket"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/sys/unix/ext/io/trait.IntoRawFd.html\" title=\"trait std::sys::unix::ext::io::IntoRawFd\">IntoRawFd</a> for <a class=\"struct\" href=\"mio/net/struct.TcpStream.html\" title=\"struct mio::net::TcpStream\">TcpStream</a>","synthetic":false,"types":["mio::net::tcp::stream::TcpStream"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/sys/unix/ext/io/trait.IntoRawFd.html\" title=\"trait std::sys::unix::ext::io::IntoRawFd\">IntoRawFd</a> for <a class=\"struct\" href=\"mio/net/struct.UdpSocket.html\" title=\"struct mio::net::UdpSocket\">UdpSocket</a>","synthetic":false,"types":["mio::net::udp::UdpSocket"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/sys/unix/ext/io/trait.IntoRawFd.html\" title=\"trait std::sys::unix::ext::io::IntoRawFd\">IntoRawFd</a> for <a class=\"struct\" href=\"mio/net/struct.UnixDatagram.html\" title=\"struct mio::net::UnixDatagram\">UnixDatagram</a>","synthetic":false,"types":["mio::net::uds::datagram::UnixDatagram"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/sys/unix/ext/io/trait.IntoRawFd.html\" title=\"trait std::sys::unix::ext::io::IntoRawFd\">IntoRawFd</a> for <a class=\"struct\" href=\"mio/net/struct.UnixListener.html\" title=\"struct mio::net::UnixListener\">UnixListener</a>","synthetic":false,"types":["mio::net::uds::listener::UnixListener"]},{"text":"impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/sys/unix/ext/io/trait.IntoRawFd.html\" title=\"trait std::sys::unix::ext::io::IntoRawFd\">IntoRawFd</a> for <a class=\"struct\" href=\"mio/net/struct.UnixStream.html\" title=\"struct mio::net::UnixStream\">UnixStream</a>","synthetic":false,"types":["mio::net::uds::stream::UnixStream"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()