|  | //! solaris-specific networking functionality. | 
|  |  | 
|  | #![unstable(feature = "unix_socket_exclbind", issue = "123481")] | 
|  |  | 
|  | use crate::io; | 
|  | use crate::os::unix::net; | 
|  | use crate::sealed::Sealed; | 
|  | use crate::sys_common::AsInner; | 
|  |  | 
|  | /// solaris-specific functionality for `AF_UNIX` sockets [`UnixDatagram`] | 
|  | /// and [`UnixStream`]. | 
|  | /// | 
|  | /// [`UnixDatagram`]: net::UnixDatagram | 
|  | /// [`UnixStream`]: net::UnixStream | 
|  | #[unstable(feature = "unix_socket_exclbind", issue = "123481")] | 
|  | pub trait UnixSocketExt: Sealed { | 
|  | /// Enables exclusive binding on the socket. | 
|  | /// | 
|  | /// If true and if the socket had been set with `SO_REUSEADDR`, | 
|  | /// it neutralises its effect. | 
|  | /// See [`man 3 tcp`](https://docs.oracle.com/cd/E88353_01/html/E37843/setsockopt-3c.html) | 
|  | #[unstable(feature = "unix_socket_exclbind", issue = "123481")] | 
|  | fn so_exclbind(&self, excl: bool) -> io::Result<()>; | 
|  |  | 
|  | /// Get the bind exclusivity bind state of the socket. | 
|  | #[unstable(feature = "unix_socket_exclbind", issue = "123481")] | 
|  | fn exclbind(&self) -> io::Result<bool>; | 
|  | } | 
|  |  | 
|  | #[unstable(feature = "unix_socket_exclbind", issue = "123481")] | 
|  | impl UnixSocketExt for net::UnixDatagram { | 
|  | fn exclbind(&self) -> io::Result<bool> { | 
|  | self.as_inner().exclbind() | 
|  | } | 
|  |  | 
|  | fn so_exclbind(&self, excl: bool) -> io::Result<()> { | 
|  | self.as_inner().set_exclbind(excl) | 
|  | } | 
|  | } | 
|  |  | 
|  | #[unstable(feature = "unix_socket_exclbind", issue = "123481")] | 
|  | impl UnixSocketExt for net::UnixStream { | 
|  | fn exclbind(&self) -> io::Result<bool> { | 
|  | self.as_inner().exclbind() | 
|  | } | 
|  |  | 
|  | fn so_exclbind(&self, excl: bool) -> io::Result<()> { | 
|  | self.as_inner().set_exclbind(excl) | 
|  | } | 
|  | } |