diff --git a/monoio/src/driver/iocp/event.rs b/monoio/src/driver/iocp/event.rs index c4732f3d..1072d7b8 100644 --- a/monoio/src/driver/iocp/event.rs +++ b/monoio/src/driver/iocp/event.rs @@ -1,3 +1,5 @@ +use std::slice::{Iter, IterMut}; + use mio::Token; use windows_sys::Win32::System::IO::OVERLAPPED_ENTRY; @@ -117,13 +119,30 @@ impl Events { *status = unsafe { std::mem::zeroed() }; } } + + pub fn iter(&self) -> Iter<'_, Event> { + self.events.iter() + } + + pub fn iter_mut(&mut self) -> IterMut<'_, Event> { + self.events.iter_mut() + } } impl<'a> IntoIterator for &'a Events { type Item = &'a Event; - type IntoIter = std::slice::Iter<'a>; + type IntoIter = Iter<'a>; fn into_iter(self) -> Self::IntoIter { - self.events.iter() + self.iter() + } +} + +impl<'a> IntoIterator for &'a mut Events { + type Item = &'a mut Event; + type IntoIter = Iter<'a>; + + fn into_iter(self) -> Self::IntoIter { + self.iter_mut() } }