diff --git a/src/sockaddr.rs b/src/sockaddr.rs index 870b2828..788ae615 100644 --- a/src/sockaddr.rs +++ b/src/sockaddr.rs @@ -49,6 +49,23 @@ impl SockAddrStorage { /// # Safety /// /// The type `T` must be one of the `sockaddr_*` types defined by this platform. + /// + /// # Examples + /// ``` + /// # #[allow(dead_code)] + /// # #[cfg(unix)] mod unix_example { + /// # use core::mem::size_of; + /// use libc::sockaddr_storage; + /// use socket2::{SockAddr, SockAddrStorage, socklen_t}; + /// + /// fn from_sockaddr_storage(recv_address: &sockaddr_storage) -> SockAddr { + /// let mut storage = SockAddrStorage::zeroed(); + /// let libc_address = unsafe { storage.view_as::() }; + /// *libc_address = *recv_address; + /// unsafe { SockAddr::new(storage, size_of::() as socklen_t) } + /// } + /// # } + /// ``` #[inline] pub unsafe fn view_as(&mut self) -> &mut T { assert!(size_of::() <= size_of::());