浏览代码

aya: `impl AsFd for RingBuf`

This bound is needed for e.g. `smol::Async`.
Tamir Duberstein 2 天之前
父节点
当前提交
3f02127b6b
共有 2 个文件被更改,包括 11 次插入6 次删除
  1. 1 1
      aya/src/maps/perf/perf_event_array.rs
  2. 10 5
      aya/src/maps/ring_buf.rs

+ 1 - 1
aya/src/maps/perf/perf_event_array.rs

@@ -64,7 +64,7 @@ impl<T: BorrowMut<MapData>> AsFd for PerfEventArrayBuffer<T> {
 
 
 impl<T: BorrowMut<MapData>> AsRawFd for PerfEventArrayBuffer<T> {
 impl<T: BorrowMut<MapData>> AsRawFd for PerfEventArrayBuffer<T> {
     fn as_raw_fd(&self) -> RawFd {
     fn as_raw_fd(&self) -> RawFd {
-        self.buf.as_fd().as_raw_fd()
+        self.as_fd().as_raw_fd()
     }
     }
 }
 }
 
 

+ 10 - 5
aya/src/maps/ring_buf.rs

@@ -9,7 +9,7 @@ use std::{
     fmt::{self, Debug, Formatter},
     fmt::{self, Debug, Formatter},
     mem,
     mem,
     ops::Deref,
     ops::Deref,
-    os::fd::{AsFd as _, AsRawFd, BorrowedFd, RawFd},
+    os::fd::{AsFd, AsRawFd, BorrowedFd, RawFd},
     sync::atomic::{AtomicU32, AtomicUsize, Ordering},
     sync::atomic::{AtomicU32, AtomicUsize, Ordering},
 };
 };
 
 
@@ -130,15 +130,20 @@ impl<T> RingBuf<T> {
     }
     }
 }
 }
 
 
-/// Access to the RawFd can be used to construct an AsyncFd for use with epoll.
-impl<T: Borrow<MapData>> AsRawFd for RingBuf<T> {
-    fn as_raw_fd(&self) -> RawFd {
+impl<T: Borrow<MapData>> AsFd for RingBuf<T> {
+    fn as_fd(&self) -> BorrowedFd<'_> {
         let Self {
         let Self {
             map,
             map,
             consumer: _,
             consumer: _,
             producer: _,
             producer: _,
         } = self;
         } = self;
-        map.borrow().fd().as_fd().as_raw_fd()
+        map.borrow().fd().as_fd()
+    }
+}
+
+impl<T: Borrow<MapData>> AsRawFd for RingBuf<T> {
+    fn as_raw_fd(&self) -> RawFd {
+        self.as_fd().as_raw_fd()
     }
     }
 }
 }