Struct calloop::sources::generic::Generic

source ·
pub struct Generic<F: AsFd, E = Error> {
    file: Option<NoIoDrop<F>>,
    pub interest: Interest,
    pub mode: Mode,
    poller: Option<Arc<Poller>>,
    token: Option<Token>,
    _error_type: PhantomData<E>,
}
Expand description

A generic event source wrapping a FD-backed type

Fields§

§file: Option<NoIoDrop<F>>

The wrapped FD-backed type.

This must be deregistered before it is dropped.

§interest: Interest

The programmed interest

§mode: Mode

The programmed mode

§poller: Option<Arc<Poller>>

Back-reference to the poller.

This is needed to drop the original file.

§token: Option<Token>§_error_type: PhantomData<E>

Implementations§

source§

impl<F: AsFd> Generic<F, Error>

source

pub fn new(file: F, interest: Interest, mode: Mode) -> Generic<F, Error>

Wrap a FD-backed type into a Generic event source that uses std::io::Error as its error type.

source

pub fn new_with_error<E>( file: F, interest: Interest, mode: Mode, ) -> Generic<F, E>

Wrap a FD-backed type into a Generic event source using an arbitrary error type.

source§

impl<F: AsFd, E> Generic<F, E>

source

pub fn unwrap(self) -> F

Unwrap the Generic source to retrieve the underlying type

source

pub fn get_ref(&self) -> &F

Get a reference to the underlying type.

source

pub unsafe fn get_mut(&mut self) -> &mut F

Get a mutable reference to the underlying type.

§Safety

This is unsafe because it allows you to modify the underlying type, which allows you to drop the underlying event source. Dropping the underlying source leads to a dangling reference.

Trait Implementations§

source§

impl<F: Debug + AsFd, E: Debug> Debug for Generic<F, E>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: AsFd, E> Drop for Generic<F, E>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl<F, E> EventSource for Generic<F, E>
where F: AsFd, E: Into<Box<dyn Error + Send + Sync>>,

§

type Event = Readiness

The type of events generated by your source.
§

type Metadata = NoIoDrop<F>

Some metadata of your event source Read more
§

type Ret = Result<PostAction, E>

The return type of the user callback Read more
§

type Error = E

The error type returned from process_events() (not the user callback!).
source§

fn process_events<C>( &mut self, readiness: Readiness, token: Token, callback: C, ) -> Result<PostAction, Self::Error>
where C: FnMut(Self::Event, &mut Self::Metadata) -> Self::Ret,

Process any relevant events Read more
source§

fn register( &mut self, poll: &mut Poll, token_factory: &mut TokenFactory, ) -> Result<()>

Register yourself to this poll instance Read more
source§

fn reregister( &mut self, poll: &mut Poll, token_factory: &mut TokenFactory, ) -> Result<()>

Re-register your file descriptors Read more
source§

fn unregister(&mut self, poll: &mut Poll) -> Result<()>

Unregister your file descriptors Read more
source§

const NEEDS_EXTRA_LIFECYCLE_EVENTS: bool = false

Whether this source needs to be sent the EventSource::before_sleep and EventSource::before_handle_events notifications. These are opt-in because they require more expensive checks, and almost all sources will not need these notifications
source§

fn before_sleep(&mut self) -> Result<Option<(Readiness, Token)>>

Notification that a single poll is about to begin Read more
source§

fn before_handle_events(&mut self, events: EventIterator<'_>)

Notification that polling is complete, and EventSource::process_events will be called with the given events for this source. The iterator may be empty, which indicates that no events were generated for this source Read more

Auto Trait Implementations§

§

impl<F, E> Freeze for Generic<F, E>
where F: Freeze,

§

impl<F, E> RefUnwindSafe for Generic<F, E>

§

impl<F, E> Send for Generic<F, E>
where E: Send, F: Send,

§

impl<F, E> Sync for Generic<F, E>
where E: Sync, F: Sync,

§

impl<F, E> Unpin for Generic<F, E>
where E: Unpin, F: Unpin,

§

impl<F, E> UnwindSafe for Generic<F, E>
where E: UnwindSafe, F: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more