Skip to main content

Arbiter

Struct Arbiter 

Source
pub struct Arbiter(/* private fields */);
Expand description

An asynchronous execution environment running on one OS thread.

Creating an arbiter starts a thread with its own local event loop. Futures spawned on that event loop are not required to implement Send.

Implementations§

Source§

impl Arbiter

Source

pub fn current() -> Arbiter

Returns the arbiter running on the current thread.

§Panics

Panics if no arbiter is running on the current thread.

Source

pub fn stop(&self)

Requests that the arbiter stop its event loop.

Source

pub fn new() -> Arbiter

Starts an arbiter on a new thread with an automatically generated name.

Source

pub fn with_name(name: String) -> Arbiter

Starts an arbiter on a new thread with the specified name.

Source

pub fn with_init<F>(name: String, init: F) -> Arbiter
where F: FnOnce() + Send + 'static,

Starts an arbiter on a new thread with the specified name.

init runs on the new thread before the arbiter’s runtime is created, for example to set the thread’s CPU affinity, so that the runtime’s memory is allocated on the NUMA node of that CPU.

Source

pub fn id(&self) -> Id

Returns the arbiter identifier.

Source

pub fn name(&self) -> &str

Returns the arbiter name.

Source

pub fn handle(&self) -> &Handle

Returns a handle to the arbiter’s runtime.

Source

pub fn latency(&self) -> Option<LatencyMetrics>

Returns the arbiter’s scheduling latency.

Returns None if latency sampling is disabled, see Builder::latency_interval.

Source

pub fn is_running(&self) -> bool

Returns whether the arbiter is running.

Source

pub fn get_value<T, F>(f: F) -> T
where T: Clone + 'static, F: FnOnce() -> T,

Returns a value from thread-local arbiter storage, inserting it if absent.

If the storage has already been destroyed because the thread is exiting, the value returned by f is not stored.

Source

pub fn on_shutdown<F>(f: F)
where F: FnOnce() + 'static,

Registers a callback to run when the current thread’s arbiter shuts down.

Callbacks run once, in registration order, on the arbiter’s thread when its stop is requested, by Arbiter::stop() or System::stop(), while the event loop is still running. An arbiter that ends without a stop request, such as one driven by SystemRunner::block_on(), runs them once its event loop has exited instead. A callback registered by another callback runs in the same shutdown.

If the thread is exiting and its thread-local storage has already been destroyed, f is dropped without running.

Source

pub fn on_stop<F>(self, f: F) -> Self
where F: Fn() + Send + Sync + 'static,

Adds a callback to run after the arbiter stops.

Source

pub fn join(&mut self) -> Result<()>

Waits for the arbiter’s thread to stop.

This returns immediately for an arbiter that does not own a thread handle, including the system’s primary arbiter.

Trait Implementations§

Source§

impl Clone for Arbiter

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Arbiter

Source§

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

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

impl Default for Arbiter

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Eq for Arbiter

Source§

impl PartialEq for Arbiter

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.