1 | //! Unix-specific networking extensions. |
2 | |
3 | pub use datagram::UnixDatagram; |
4 | pub use listener::{Incoming, UnixListener}; |
5 | pub use stream::UnixStream; |
6 | |
7 | mod datagram; |
8 | mod listener; |
9 | mod stream; |
10 | |
11 | cfg_not_docs! { |
12 | pub use std::os::unix::net::SocketAddr; |
13 | } |
14 | |
15 | cfg_docs! { |
16 | use std::fmt; |
17 | |
18 | use crate::path::Path; |
19 | |
20 | /// An address associated with a Unix socket. |
21 | /// |
22 | /// # Examples |
23 | /// |
24 | /// ``` |
25 | /// use async_std::os::unix::net::UnixListener; |
26 | /// |
27 | /// let socket = UnixListener::bind("/tmp/socket").await?; |
28 | /// let addr = socket.local_addr()?; |
29 | /// ``` |
30 | #[derive (Clone)] |
31 | pub struct SocketAddr { |
32 | _private: (), |
33 | } |
34 | |
35 | impl SocketAddr { |
36 | /// Returns `true` if the address is unnamed. |
37 | /// |
38 | /// # Examples |
39 | /// |
40 | /// A named address: |
41 | /// |
42 | /// ```no_run |
43 | /// use async_std::os::unix::net::UnixListener; |
44 | /// |
45 | /// let socket = UnixListener::bind("/tmp/socket").await?; |
46 | /// let addr = socket.local_addr()?; |
47 | /// assert_eq!(addr.is_unnamed(), false); |
48 | /// ``` |
49 | /// |
50 | /// An unnamed address: |
51 | /// |
52 | /// ```no_run |
53 | /// use async_std::os::unix::net::UnixDatagram; |
54 | /// |
55 | /// let socket = UnixDatagram::unbound().await?; |
56 | /// let addr = socket.local_addr()?; |
57 | /// assert_eq!(addr.is_unnamed(), true); |
58 | /// ``` |
59 | pub fn is_unnamed(&self) -> bool { |
60 | unreachable!("this impl only appears in the rendered docs" ) |
61 | } |
62 | |
63 | /// Returns the contents of this address if it is a `pathname` address. |
64 | /// |
65 | /// # Examples |
66 | /// |
67 | /// With a pathname: |
68 | /// |
69 | /// ```no_run |
70 | /// use async_std::os::unix::net::UnixListener; |
71 | /// use async_std::path::Path; |
72 | /// |
73 | /// let socket = UnixListener::bind("/tmp/socket").await?; |
74 | /// let addr = socket.local_addr()?; |
75 | /// assert_eq!(addr.as_pathname(), Some(Path::new("/tmp/socket"))); |
76 | /// ``` |
77 | /// |
78 | /// Without a pathname: |
79 | /// |
80 | /// ``` |
81 | /// use async_std::os::unix::net::UnixDatagram; |
82 | /// |
83 | /// let socket = UnixDatagram::unbound()?; |
84 | /// let addr = socket.local_addr()?; |
85 | /// assert_eq!(addr.as_pathname(), None); |
86 | /// ``` |
87 | pub fn as_pathname(&self) -> Option<&Path> { |
88 | unreachable!("this impl only appears in the rendered docs" ) |
89 | } |
90 | } |
91 | |
92 | impl fmt::Debug for SocketAddr { |
93 | fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { |
94 | unreachable!("this impl only appears in the rendered docs" ) |
95 | } |
96 | } |
97 | } |
98 | |