(function() {var implementors = {};
implementors["mio"] = [{"text":"impl Freeze for <a class=\"struct\" href=\"mio/struct.Interest.html\" title=\"struct mio::Interest\">Interest</a>","synthetic":true,"types":["mio::interest::Interest"]},{"text":"impl !Freeze for <a class=\"struct\" href=\"mio/struct.Poll.html\" title=\"struct mio::Poll\">Poll</a>","synthetic":true,"types":["mio::poll::Poll"]},{"text":"impl !Freeze for <a class=\"struct\" href=\"mio/struct.Registry.html\" title=\"struct mio::Registry\">Registry</a>","synthetic":true,"types":["mio::poll::Registry"]},{"text":"impl&lt;'a&gt; Freeze for <a class=\"struct\" href=\"mio/unix/struct.SourceFd.html\" title=\"struct mio::unix::SourceFd\">SourceFd</a>&lt;'a&gt;","synthetic":true,"types":["mio::sys::unix::sourcefd::SourceFd"]},{"text":"impl Freeze for <a class=\"struct\" href=\"mio/net/struct.SocketAddr.html\" title=\"struct mio::net::SocketAddr\">SocketAddr</a>","synthetic":true,"types":["mio::sys::unix::uds::socketaddr::SocketAddr"]},{"text":"impl !Freeze for <a class=\"struct\" href=\"mio/unix/pipe/struct.Sender.html\" title=\"struct mio::unix::pipe::Sender\">Sender</a>","synthetic":true,"types":["mio::sys::unix::pipe::Sender"]},{"text":"impl !Freeze for <a class=\"struct\" href=\"mio/unix/pipe/struct.Receiver.html\" title=\"struct mio::unix::pipe::Receiver\">Receiver</a>","synthetic":true,"types":["mio::sys::unix::pipe::Receiver"]},{"text":"impl Freeze for <a class=\"struct\" href=\"mio/struct.Token.html\" title=\"struct mio::Token\">Token</a>","synthetic":true,"types":["mio::token::Token"]},{"text":"impl Freeze for <a class=\"struct\" href=\"mio/struct.Waker.html\" title=\"struct mio::Waker\">Waker</a>","synthetic":true,"types":["mio::waker::Waker"]},{"text":"impl Freeze for <a class=\"struct\" href=\"mio/event/struct.Event.html\" title=\"struct mio::event::Event\">Event</a>","synthetic":true,"types":["mio::event::event::Event"]},{"text":"impl Freeze for <a class=\"struct\" href=\"mio/event/struct.Events.html\" title=\"struct mio::event::Events\">Events</a>","synthetic":true,"types":["mio::event::events::Events"]},{"text":"impl&lt;'a&gt; Freeze for <a class=\"struct\" href=\"mio/event/struct.Iter.html\" title=\"struct mio::event::Iter\">Iter</a>&lt;'a&gt;","synthetic":true,"types":["mio::event::events::Iter"]},{"text":"impl !Freeze for <a class=\"struct\" href=\"mio/net/struct.TcpListener.html\" title=\"struct mio::net::TcpListener\">TcpListener</a>","synthetic":true,"types":["mio::net::tcp::listener::TcpListener"]},{"text":"impl Freeze for <a class=\"struct\" href=\"mio/net/struct.TcpSocket.html\" title=\"struct mio::net::TcpSocket\">TcpSocket</a>","synthetic":true,"types":["mio::net::tcp::socket::TcpSocket"]},{"text":"impl Freeze for <a class=\"struct\" href=\"mio/net/struct.TcpKeepalive.html\" title=\"struct mio::net::TcpKeepalive\">TcpKeepalive</a>","synthetic":true,"types":["mio::net::tcp::socket::TcpKeepalive"]},{"text":"impl !Freeze for <a class=\"struct\" href=\"mio/net/struct.TcpStream.html\" title=\"struct mio::net::TcpStream\">TcpStream</a>","synthetic":true,"types":["mio::net::tcp::stream::TcpStream"]},{"text":"impl !Freeze for <a class=\"struct\" href=\"mio/net/struct.UdpSocket.html\" title=\"struct mio::net::UdpSocket\">UdpSocket</a>","synthetic":true,"types":["mio::net::udp::UdpSocket"]},{"text":"impl !Freeze for <a class=\"struct\" href=\"mio/net/struct.UnixDatagram.html\" title=\"struct mio::net::UnixDatagram\">UnixDatagram</a>","synthetic":true,"types":["mio::net::uds::datagram::UnixDatagram"]},{"text":"impl !Freeze for <a class=\"struct\" href=\"mio/net/struct.UnixListener.html\" title=\"struct mio::net::UnixListener\">UnixListener</a>","synthetic":true,"types":["mio::net::uds::listener::UnixListener"]},{"text":"impl !Freeze for <a class=\"struct\" href=\"mio/net/struct.UnixStream.html\" title=\"struct mio::net::UnixStream\">UnixStream</a>","synthetic":true,"types":["mio::net::uds::stream::UnixStream"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()