     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48

    #![cfg(not(loom))]

    //! TCP/UDP/Unix bindings for `tokio`.
    //!
    //! This module contains the TCP/UDP/Unix networking types, similar to the standard
    //! library, which can be used to implement networking protocols.
    //!
    //! # Organization
    //!
    //! * [`TcpListener`] and [`TcpStream`] provide functionality for communication over TCP
    //! * [`UdpSocket`] provides functionality for communication over UDP
    //! * [`UnixListener`] and [`UnixStream`] provide functionality for communication over a
    //! Unix Domain Stream Socket **(available on Unix only)**
    //! * [`UnixDatagram`] provides functionality for communication
    //! over Unix Domain Datagram Socket **(available on Unix only)**

    //!
    //! [`TcpListener`]: TcpListener
    //! [`TcpStream`]: TcpStream
    //! [`UdpSocket`]: UdpSocket
    //! [`UnixListener`]: UnixListener
    //! [`UnixStream`]: UnixStream
    //! [`UnixDatagram`]: UnixDatagram

    mod addr;
    #[cfg(feature = "net")]
    pub(crate) use addr::to_socket_addrs;
    pub use addr::ToSocketAddrs;

    cfg_net! {
        mod lookup_host;
        pub use lookup_host::lookup_host;

        pub mod tcp;
        pub use tcp::listener::TcpListener;
        pub use tcp::socket::TcpSocket;
        pub use tcp::stream::TcpStream;

        mod udp;
        pub use udp::UdpSocket;
    }

    cfg_net_unix! {
        pub mod unix;
        pub use unix::datagram::socket::UnixDatagram;
        pub use unix::listener::UnixListener;
        pub use unix::stream::UnixStream;
    }