Child

Struct Child 

Source
pub struct Child<E, C = dyn AnyChannel>
where E: Send + 'static, C: DynChannel + ?Sized,
{ /* private fields */ }
Expand description

A child is the non clone-able reference to an actor with a single process.

Children can be of two forms:

  • Child<E, Channel<M>>: This is the default form, it can be transformed into a Child<E> using Child::into_dyn.
  • Child<E>: This form is a dynamic child, it can be transformed back into a Child<E, Channel<M>> using Child::downcast::.

A child can be transformed into a ChildPool using Child::into_pool().

A child can be awaited which returns the parameter E once the actor exits.

Implementations§

Source§

impl<E, C> Child<E, C>
where E: Send + 'static, C: DynChannel + ?Sized,

Source

pub fn into_joinhandle(self) -> JoinHandle<E>

Get the underlying JoinHandle.

This will not run the drop, and therefore the actor will not be halted/aborted.

Source

pub fn abort(&mut self) -> bool

Abort the actor.

Returns true if this is the first abort.

Source

pub fn is_finished(&self) -> bool

Whether the task is finished.

Source

pub fn into_pool(self) -> ChildPool<E, C>

Convert the Child into a ChildPool.

Source

pub fn downcast<M: Send + 'static>(self) -> Result<Child<E, Channel<M>>, Self>
where C: AnyChannel,

Downcast the Child<E> to a Child<E, Channel<M>>.

Source

pub fn shutdown(&mut self, timeout: Duration) -> ShutdownFut<'_, E, C>

Halts the actor, and then waits for it to exit. This always returns with the result of the task, and closes the channel.

If the timeout expires before the actor has exited, the actor will be aborted.

Source

pub fn get_address(&self) -> Address<C>

Get a new Address to the Channel.

Source

pub fn attach(&mut self, duration: Duration) -> Option<Duration>

Attach the actor.

Returns the old abort-timeout if it was already attached.

Source

pub fn detach(&mut self) -> Option<Duration>

Detach the actor.

Returns the old abort-timeout if it was attached before.

Source

pub fn is_aborted(&self) -> bool

Whether the actor is aborted.

Source

pub fn is_attached(&self) -> bool

Whether the actor is attached.

Get a reference to the current Link of the actor.

Source

pub fn close(&self) -> bool

Close the Channel.

Source

pub fn halt(&self)

Halt the actor.

This also closes the Inbox.

Source

pub fn halt_some(&self, n: u32)

Halt n processes.

Source

pub fn process_count(&self) -> usize

Get the amount of processes.

Source

pub fn msg_count(&self) -> usize

Get the amount of messages in the Channel.

Source

pub fn address_count(&self) -> usize

Get the amount of Addresses of the Channel.

Source

pub fn is_closed(&self) -> bool

Whether the Channel is closed.

Source

pub fn is_bounded(&self) -> bool

Source

pub fn capacity(&self) -> &Capacity

Get the Capacity of the Channel.

Source

pub fn has_exited(&self) -> bool

Whether all processes have exited.

Source

pub fn actor_id(&self) -> u64

Get the actor’s id.

Source§

impl<E, M> Child<E, Channel<M>>
where E: Send + 'static, M: Send + 'static,

Source

pub fn into_dyn(self) -> Child<E>

Convert the Child<T, Channel<M>> into a Child<T>

Source

pub fn try_send(&self, msg: M) -> Result<(), TrySendError<M>>

Attempt to send a message to the actor.

  • In the case of an unbounded Channel, when BackPressure returns a timeout this fails.
  • In the case of a bounded Channel, when it is full this fails.

For bounded channels, this method is the same as send_now.

Source

pub fn send_now(&self, msg: M) -> Result<(), TrySendError<M>>

Attempt to send a message to the actor.

For bounded channels, this method is the same as try_send.

Source

pub fn send(&self, msg: M) -> SendFut<'_, M>

Attempt to send a message to the actor.

  • In the case of an unbounded Channel, when BackPressure returns a timeout this waits untill the timeout is over.
  • In the case of a bounded Channel, when it is full this waits untill space is available.
Source

pub fn send_blocking(&self, msg: M) -> Result<(), SendError<M>>

Same as send but it blocking the OS-thread.

Trait Implementations§

Source§

impl<E, C> Debug for Child<E, C>
where E: Send + 'static + Debug, C: DynChannel + ?Sized + Debug,

Source§

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

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

impl<E: Send + 'static, C: DynChannel + ?Sized> Drop for Child<E, C>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<E: Send + 'static, C: DynChannel + ?Sized> Future for Child<E, C>

Source§

type Output = Result<E, ExitError>

The type of value produced on completion.
Source§

fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>

Attempts to resolve the future to a final value, registering the current task for wakeup if the value is not yet available. Read more
Source§

impl<E: Send + 'static, C: DynChannel + ?Sized> Unpin for Child<E, C>

Auto Trait Implementations§

§

impl<E, C> Freeze for Child<E, C>
where C: ?Sized,

§

impl<E, C> RefUnwindSafe for Child<E, C>
where C: RefUnwindSafe + ?Sized,

§

impl<E, C> Send for Child<E, C>
where C: Sync + Send + ?Sized,

§

impl<E, C> Sync for Child<E, C>
where C: Sync + Send + ?Sized,

§

impl<E, C> UnwindSafe for Child<E, C>
where C: RefUnwindSafe + ?Sized,

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> FutureExt for T
where T: Future + ?Sized,

Source§

fn map<U, F>(self, f: F) -> Map<Self, F>
where F: FnOnce(Self::Output) -> U, Self: Sized,

Map this future’s output to a different type, returning a new future of the resulting type. Read more
Source§

fn map_into<U>(self) -> MapInto<Self, U>
where Self::Output: Into<U>, Self: Sized,

Map this future’s output to a different type, returning a new future of the resulting type. Read more
Source§

fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F>
where F: FnOnce(Self::Output) -> Fut, Fut: Future, Self: Sized,

Chain on a computation for when a future finished, passing the result of the future to the provided closure f. Read more
Source§

fn left_future<B>(self) -> Either<Self, B>
where B: Future<Output = Self::Output>, Self: Sized,

Wrap this future in an Either future, making it the left-hand variant of that Either. Read more
Source§

fn right_future<A>(self) -> Either<A, Self>
where A: Future<Output = Self::Output>, Self: Sized,

Wrap this future in an Either future, making it the right-hand variant of that Either. Read more
Source§

fn into_stream(self) -> IntoStream<Self>
where Self: Sized,

Convert this future into a single element stream. Read more
Source§

fn flatten(self) -> Flatten<Self>
where Self::Output: Future, Self: Sized,

Flatten the execution of this future when the output of this future is itself another future. Read more
Source§

fn flatten_stream(self) -> FlattenStream<Self>
where Self::Output: Stream, Self: Sized,

Flatten the execution of this future when the successful result of this future is a stream. Read more
Source§

fn fuse(self) -> Fuse<Self>
where Self: Sized,

Fuse a future such that poll will never again be called once it has completed. This method can be used to turn any Future into a FusedFuture. Read more
Source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where F: FnOnce(&Self::Output), Self: Sized,

Do something with the output of a future before passing it on. Read more
Source§

fn catch_unwind(self) -> CatchUnwind<Self>
where Self: Sized + UnwindSafe,

Catches unwinding panics while polling the future. Read more
Source§

fn shared(self) -> Shared<Self>
where Self: Sized, Self::Output: Clone,

Create a cloneable handle to this future where all handles will resolve to the same result. Read more
Source§

fn remote_handle(self) -> (Remote<Self>, RemoteHandle<Self::Output>)
where Self: Sized,

Turn this future into a future that yields () on completion and sends its output to another future on a separate task. Read more
Source§

fn boxed<'a>(self) -> Pin<Box<dyn Future<Output = Self::Output> + Send + 'a>>
where Self: Sized + Send + 'a,

Wrap the future in a Box, pinning it. Read more
Source§

fn boxed_local<'a>(self) -> Pin<Box<dyn Future<Output = Self::Output> + 'a>>
where Self: Sized + 'a,

Wrap the future in a Box, pinning it. Read more
Source§

fn unit_error(self) -> UnitError<Self>
where Self: Sized,

Source§

fn never_error(self) -> NeverError<Self>
where Self: Sized,

Source§

fn poll_unpin(&mut self, cx: &mut Context<'_>) -> Poll<Self::Output>
where Self: Unpin,

A convenience for calling Future::poll on Unpin future types.
Source§

fn now_or_never(self) -> Option<Self::Output>
where Self: Sized,

Evaluates and consumes the future, returning the resulting output if the future is ready after the first call to Future::poll. 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<F> IntoFuture for F
where F: Future,

Source§

type Output = <F as Future>::Output

The output that the future will produce on completion.
Source§

type IntoFuture = F

Which kind of future are we turning this into?
Source§

fn into_future(self) -> <F as IntoFuture>::IntoFuture

Creates a future from a value. Read more
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<F, T, E> TryFuture for F
where F: Future<Output = Result<T, E>> + ?Sized,

Source§

type Ok = T

The type of successful values yielded by this future
Source§

type Error = E

The type of failures yielded by this future
Source§

fn try_poll( self: Pin<&mut F>, cx: &mut Context<'_>, ) -> Poll<<F as Future>::Output>

Poll this TryFuture as if it were a Future. Read more
Source§

impl<Fut> TryFutureExt for Fut
where Fut: TryFuture + ?Sized,

Source§

fn flatten_sink<Item>(self) -> FlattenSink<Self, Self::Ok>
where Self::Ok: Sink<Item, Error = Self::Error>, Self: Sized,

Flattens the execution of this future when the successful result of this future is a Sink. Read more
Source§

fn map_ok<T, F>(self, f: F) -> MapOk<Self, F>
where F: FnOnce(Self::Ok) -> T, Self: Sized,

Maps this future’s success value to a different value. Read more
Source§

fn map_ok_or_else<T, E, F>(self, e: E, f: F) -> MapOkOrElse<Self, F, E>
where F: FnOnce(Self::Ok) -> T, E: FnOnce(Self::Error) -> T, Self: Sized,

Maps this future’s success value to a different value, and permits for error handling resulting in the same type. Read more
Source§

fn map_err<E, F>(self, f: F) -> MapErr<Self, F>
where F: FnOnce(Self::Error) -> E, Self: Sized,

Maps this future’s error value to a different value. Read more
Source§

fn err_into<E>(self) -> ErrInto<Self, E>
where Self: Sized, Self::Error: Into<E>,

Maps this future’s Error to a new error type using the Into trait. Read more
Source§

fn ok_into<U>(self) -> OkInto<Self, U>
where Self: Sized, Self::Ok: Into<U>,

Maps this future’s Ok to a new type using the Into trait.
Source§

fn and_then<Fut, F>(self, f: F) -> AndThen<Self, Fut, F>
where F: FnOnce(Self::Ok) -> Fut, Fut: TryFuture<Error = Self::Error>, Self: Sized,

Executes another future after this one resolves successfully. The success value is passed to a closure to create this subsequent future. Read more
Source§

fn or_else<Fut, F>(self, f: F) -> OrElse<Self, Fut, F>
where F: FnOnce(Self::Error) -> Fut, Fut: TryFuture<Ok = Self::Ok>, Self: Sized,

Executes another future if this one resolves to an error. The error value is passed to a closure to create this subsequent future. Read more
Source§

fn inspect_ok<F>(self, f: F) -> InspectOk<Self, F>
where F: FnOnce(&Self::Ok), Self: Sized,

Do something with the success value of a future before passing it on. Read more
Source§

fn inspect_err<F>(self, f: F) -> InspectErr<Self, F>
where F: FnOnce(&Self::Error), Self: Sized,

Do something with the error value of a future before passing it on. Read more
Source§

fn try_flatten(self) -> TryFlatten<Self, Self::Ok>
where Self::Ok: TryFuture<Error = Self::Error>, Self: Sized,

Flatten the execution of this future when the successful result of this future is another future. Read more
Source§

fn try_flatten_stream(self) -> TryFlattenStream<Self>
where Self::Ok: TryStream<Error = Self::Error>, Self: Sized,

Flatten the execution of this future when the successful result of this future is a stream. Read more
Source§

fn unwrap_or_else<F>(self, f: F) -> UnwrapOrElse<Self, F>
where Self: Sized, F: FnOnce(Self::Error) -> Self::Ok,

Unwraps this future’s output, producing a future with this future’s Ok type as its Output type. Read more
Source§

fn into_future(self) -> IntoFuture<Self>
where Self: Sized,

Wraps a TryFuture into a type that implements Future. Read more
Source§

fn try_poll_unpin( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<Self::Ok, Self::Error>>
where Self: Unpin,

A convenience method for calling TryFuture::try_poll on Unpin future types.
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.