diff --git a/gio/src/file_descriptor_based.rs b/gio/src/file_descriptor_based.rs index 3a08c0b62a7b..074f14d66fc6 100644 --- a/gio/src/file_descriptor_based.rs +++ b/gio/src/file_descriptor_based.rs @@ -1,12 +1,12 @@ // Take a look at the license at the top of the repository in the LICENSE file. #[cfg(unix)] -use std::os::unix::io::{AsRawFd, FromRawFd, RawFd}; +use std::os::unix::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, RawFd}; use crate::ffi; use glib::{prelude::*, translate::*}; #[cfg(all(not(unix), docsrs))] -use socket::{AsRawFd, FromRawFd, IntoRawFd, RawFd}; +use socket::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, RawFd}; glib::wrapper! { #[doc(alias = "GFileDescriptorBased")] @@ -27,6 +27,12 @@ impl AsRawFd for FileDescriptorBased { } } +impl AsFd for FileDescriptorBased { + fn as_fd(&self) -> BorrowedFd<'_> { + unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) } + } +} + pub trait FileDescriptorBasedExtManual: IsA + 'static { #[doc(alias = "g_file_descriptor_based_get_fd")] #[doc(alias = "get_fd")]