zephyr::work

Struct Work

Source
pub struct Work<T> { /* private fields */ }
Expand description

A basic Zephyr work item.

Holds a k_work, along with the data associated with that work. When the work is queued, the act method will be called on the provided SimpleAction.

Implementations§

Source§

impl<T: SimpleAction + Send> Work<T>

Source

pub fn new(action: T) -> Pin<Arc<Self>>

Construct a new Work from the given action.

Note that the data will be moved into the pinned Work. The data is internal, and only accessible to the work thread (the act method). If shared data is needed, normal inter-thread sharing mechanisms are needed.

TODO: Can we come up with a way to allow sharing on the same worker using Rc instead of Arc?

Source

pub fn submit(this: Pin<Arc<Self>>) -> Result<SubmitResult>

Submit this work to the system work queue.

This can return several possible Ok results. See the docs on SubmitResult for an explanation of them.

Source

pub fn submit_to_queue( this: Pin<Arc<Self>>, queue: &WorkQueue, ) -> Result<SubmitResult>

Submit this work to a specified work queue.

TODO: Change when we have better wrappers for work queues.

Source

pub fn action(&self) -> &T

Access the inner action.

Trait Implementations§

Source§

impl<F> Send for Work<F>
where F: SimpleAction + Send,

SAFETY: Work queues can be sent as long as the action itself can be.

Source§

impl<F> Sync for Work<F>
where F: SimpleAction + Sync,

SAFETY: Work queues are Sync when the action is.

Auto Trait Implementations§

§

impl<T> !Freeze for Work<T>

§

impl<T> !RefUnwindSafe for Work<T>

§

impl<T> Unpin for Work<T>
where T: Unpin,

§

impl<T> UnwindSafe for Work<T>
where T: 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, 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>,

Source§

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>,

Source§

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.