diff --git a/tokio/src/fs/file.rs b/tokio/src/fs/file.rs index af7be5863c9..c45582729ac 100644 --- a/tokio/src/fs/file.rs +++ b/tokio/src/fs/file.rs @@ -600,3 +600,17 @@ impl fmt::Debug for File { .finish() } } + +#[cfg(unix)] +impl std::os::unix::io::AsRawFd for File { + fn as_raw_fd(&self) -> std::os::unix::io::RawFd { + self.std.as_raw_fd() + } +} + +#[cfg(windows)] +impl std::os::windows::io::AsRawHandle for File { + fn as_raw_handle(&self) -> std::os::windows::io::RawHandle { + self.std.as_raw_handle() + } +} diff --git a/tokio/tests/support/mock_file.rs b/tokio/tests/support/mock_file.rs index 7f3beee8415..44aa7b3f715 100644 --- a/tokio/tests/support/mock_file.rs +++ b/tokio/tests/support/mock_file.rs @@ -263,3 +263,17 @@ impl fmt::Debug for File { fmt.debug_struct("mock::File").finish() } } + +#[cfg(unix)] +impl std::os::unix::io::AsRawFd for File { + fn as_raw_fd(&self) -> std::os::unix::io::RawFd { + unimplemented!(); + } +} + +#[cfg(windows)] +impl std::os::windows::io::AsRawHandle for File { + fn as_raw_handle(&self) -> std::os::windows::io::RawHandle { + unimplemented!(); + } +}