Trait unsafe_io::AsUnsafeSocket [−][src]
pub unsafe trait AsUnsafeSocket: AsUnsafeHandle { fn as_unsafe_socket(&self) -> UnsafeSocket; fn as_tcp_stream_view(&self) -> View<'_, TcpStream> { ... } unsafe fn as_unscoped_tcp_stream_view(&self) -> View<'static, TcpStream> { ... } fn as_tcp_listener_view(&self) -> View<'_, TcpListener> { ... } unsafe fn as_unscoped_tcp_listener_view(&self) -> View<'static, TcpListener> { ... } fn as_udp_socket_view(&self) -> View<'_, UdpSocket> { ... } unsafe fn as_unscoped_udp_socket_view(&self) -> View<'static, UdpSocket> { ... } fn as_unix_stream_view(&self) -> View<'_, UnixStream> { ... } unsafe fn as_unscoped_unix_stream_view(&self) -> View<'static, UnixStream> { ... } fn eq_socket<Socketlike: AsUnsafeSocket>(&self, other: &Socketlike) -> bool { ... } }
Expand description
A trait for types which contain an unsafe socket and can expose it.
A type implementing AsUnsafeSocket guarantees that the return value
from as_unsafe_socket on an instance of the type is a copy of a socket
which is owned.
Safety
This trait is unsafe because types implementing it must guarantee they
own their socket.
Required methods
fn as_unsafe_socket(&self) -> UnsafeSocket
fn as_unsafe_socket(&self) -> UnsafeSocketReturn the contained unsafe socket.
Provided methods
fn as_tcp_stream_view(&self) -> View<'_, TcpStream>
fn as_tcp_stream_view(&self) -> View<'_, TcpStream>Utility for returning a value which dereferences to a &TcpStream or
&mut TcpStream.
Note that AsUnsafeSocket may be implemented for types which are not
TCP streams, and which don’t support all the methods on TcpStream.
unsafe fn as_unscoped_tcp_stream_view(&self) -> View<'static, TcpStream>
unsafe fn as_unscoped_tcp_stream_view(&self) -> View<'static, TcpStream>Like as_tcp_stream_view, but returns a value which is not explicitly
tied to the lifetime of self.
Safety
Callers must manually ensure that the view doesn’t outlive self.
fn as_tcp_listener_view(&self) -> View<'_, TcpListener>
fn as_tcp_listener_view(&self) -> View<'_, TcpListener>Utility for returning a value which dereferences to a &TcpListener or
&mut TcpListener.
Note that AsUnsafeSocket may be implemented for types which are not
TCP listeners, and which don’t support all the methods on
TcpListener.
unsafe fn as_unscoped_tcp_listener_view(&self) -> View<'static, TcpListener>
unsafe fn as_unscoped_tcp_listener_view(&self) -> View<'static, TcpListener>Like as_tcp_listener_view, but returns a value which is not
explicitly tied to the lifetime of self.
Safety
Callers must manually ensure that the view doesn’t outlive self.
fn as_udp_socket_view(&self) -> View<'_, UdpSocket>
fn as_udp_socket_view(&self) -> View<'_, UdpSocket>Utility for returning a value which dereferences to a &UdpSocket or
&mut UdpSocket.
Note that AsUnsafeSocket may be implemented for types which are not
UDP sockets, and which don’t support all the methods on UdpSocket.
unsafe fn as_unscoped_udp_socket_view(&self) -> View<'static, UdpSocket>
unsafe fn as_unscoped_udp_socket_view(&self) -> View<'static, UdpSocket>Like as_udp_socket_view, but returns a value which is not explicitly
tied to the lifetime of self.
Safety
Callers must manually ensure that the view doesn’t outlive self.
fn as_unix_stream_view(&self) -> View<'_, UnixStream>
fn as_unix_stream_view(&self) -> View<'_, UnixStream>Utility for returning a value which dereferences to a &UnixStream or
&mut UnixStream.
Note that AsUnsafeSocket may be implemented for types which are not
Unix-domain socket streams, and which don’t support all the methods on
UnixStream.
unsafe fn as_unscoped_unix_stream_view(&self) -> View<'static, UnixStream>
unsafe fn as_unscoped_unix_stream_view(&self) -> View<'static, UnixStream>Like as_unix_stream_view, but returns a value which is not explicitly
tied to the lifetime of self.
Safety
Callers must manually ensure that the view doesn’t outlive self.
fn eq_socket<Socketlike: AsUnsafeSocket>(&self, other: &Socketlike) -> bool
fn eq_socket<Socketlike: AsUnsafeSocket>(&self, other: &Socketlike) -> boolTest whether self.as_unsafe_socket().as_unsafe_handle() is equal to
other.as_unsafe_socket().as_unsafe_handle().
That this depends on the guarantee that types that implement
AsUnsafeSocket own their resources, so we won’t erroneously compare
dangling handles.