]> git.feebdaed.xyz Git - 0xmirror/tokio.git/commitdiff
net: add `SocketAddr::as_abstract_name` (#7491)
authorLuca Bruno <lucab@lucabruno.net>
Tue, 29 Jul 2025 09:07:58 +0000 (11:07 +0200)
committerGitHub <noreply@github.com>
Tue, 29 Jul 2025 09:07:58 +0000 (11:07 +0200)
spellcheck.dic
tokio/src/net/unix/socketaddr.rs

index a8140e3b7e22fb3a9632d385e580c2f05a750ef7..6434e68bc2dc30985c37e60b45c278ace7e9b0df 100644 (file)
@@ -1,4 +1,4 @@
-306
+307
 &
 +
 <
@@ -184,6 +184,7 @@ mut
 mutex
 Mutex
 Nagle
+namespace
 nonblocking
 nondecreasing
 noop
index 9ef49ac405387d5e1fb6ff5265c1f38e0bfa155a..fd7e3e236f503488ba4b6f572dcdaa1ea821ea83 100644 (file)
@@ -12,7 +12,7 @@ pub struct SocketAddr(pub(super) std::os::unix::net::SocketAddr);
 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 {
@@ -21,12 +21,30 @@ impl SocketAddr {
 
     /// 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 {