add TryFrom/From implementations (#1347)

* TryFrom<net::TcpListener> for TcpListener
* TryFrom<net::TcpStream> for TcpStream
* TryFrom<net::UdpSocket> for UdpSocket
* TryFrom<net::UnixDatagram> for UnixDatagram
* TryFrom<net::UnixListener> for UnixListener
* TryFrom<net::UnixStream> for UnixStream
* TryFrom<UnixDatagram> for mio_uds::UnixDatagram
* TryFrom<File> for io::File
* From<io::File> for File
This commit is contained in:
Taiki Endo
2019-07-24 09:26:12 -07:00
committed by Carl Lerche
parent 59bc364a0e
commit ca0e5cc670
7 changed files with 102 additions and 0 deletions
+17
View File
@@ -18,6 +18,7 @@ pub use self::seek::SeekFuture;
use tokio_io::{AsyncRead, AsyncWrite};
use std::convert::TryFrom;
use std::fs::{File as StdFile, Metadata, Permissions};
use std::io::{self, Read, Seek, Write};
use std::path::Path;
@@ -536,3 +537,19 @@ impl Drop for File {
}
}
}
impl From<StdFile> for File {
fn from(std: StdFile) -> Self {
Self::from_std(std)
}
}
impl TryFrom<File> for StdFile {
type Error = io::Error;
fn try_from(mut file: File) -> Result<Self, Self::Error> {
file.std
.take()
.ok_or_else(|| io::Error::new(io::ErrorKind::Other, "`File` instance already shutdown"))
}
}