1 use std
::os
::wasi
::io
::{FromRawFd, AsRawFd}
;
3 use {TcpBuilder, UdpBuilder, FromInner, AsInner}
;
5 use sys
::{self, c::__wasi_fd_t}
;
7 impl FromRawFd
for TcpBuilder
{
8 unsafe fn from_raw_fd(fd
: __wasi_fd_t
) -> TcpBuilder
{
9 let sock
= sys
::Socket
::from_inner(fd
);
10 TcpBuilder
::from_inner(Socket
::from_inner(sock
))
14 impl AsRawFd
for TcpBuilder
{
15 fn as_raw_fd(&self) -> __wasi_fd_t
{
16 // TODO: this unwrap() is very bad
17 self.as_inner().borrow().as_ref().unwrap().as_inner().raw() as __wasi_fd_t
21 impl FromRawFd
for UdpBuilder
{
22 unsafe fn from_raw_fd(fd
: __wasi_fd_t
) -> UdpBuilder
{
23 let sock
= sys
::Socket
::from_inner(fd
);
24 UdpBuilder
::from_inner(Socket
::from_inner(sock
))
28 impl AsRawFd
for UdpBuilder
{
29 fn as_raw_fd(&self) -> __wasi_fd_t
{
30 // TODO: this unwrap() is very bad
31 self.as_inner().borrow().as_ref().unwrap().as_inner().raw() as __wasi_fd_t