impl SocketAddr {
/// Returns `true` if the address is unnamed.
///
- /// Documentation reflected in [`SocketAddr`]
+ /// Documentation reflected in [`SocketAddr`].
///
/// [`SocketAddr`]: std::os::unix::net::SocketAddr
pub fn is_unnamed(&self) -> bool {
/// Returns the contents of this address if it is a `pathname` address.
///
- /// Documentation reflected in [`SocketAddr`]
+ /// Documentation reflected in [`SocketAddr`].
///
/// [`SocketAddr`]: std::os::unix::net::SocketAddr
pub fn as_pathname(&self) -> Option<&Path> {
self.0.as_pathname()
}
+
+ /// Returns the contents of this address if it is in the abstract namespace.
+ ///
+ /// Documentation reflected in [`SocketAddrExt`].
+ /// The abstract namespace is a Linux-specific feature.
+ ///
+ ///
+ /// [`SocketAddrExt`]: std::os::linux::net::SocketAddrExt
+ #[cfg(any(target_os = "linux", target_os = "android"))]
+ #[cfg_attr(docsrs, doc(cfg(any(target_os = "linux", target_os = "android"))))]
+ pub fn as_abstract_name(&self) -> Option<&[u8]> {
+ #[cfg(target_os = "android")]
+ use std::os::android::net::SocketAddrExt;
+ #[cfg(target_os = "linux")]
+ use std::os::linux::net::SocketAddrExt;
+
+ self.0.as_abstract_name()
+ }
}
impl fmt::Debug for SocketAddr {