[−][src]Struct xtra::MessageChannel
A message channel is a channel through which you can send only one kind of message, but to
any actor that can handle it. It is like Address
, but associated with
the message type rather than the actor type. Any existing MessageChannel
s will prevent the
dropping of the actor. If this is undesirable, then the WeakMessageChannel
struct should be used instead. This struct is created by calling
Address::channel
,
Address::into_channel
, or the similar methods on
WeakAddress
.
Example
struct WhatsYourName; impl Message for WhatsYourName { type Result = &'static str; } struct Alice; struct Bob; impl Actor for Alice {} impl Actor for Bob {} impl SyncHandler<WhatsYourName> for Alice { fn handle(&mut self, _: WhatsYourName, _ctx: &mut Context<Self>) -> &'static str { "Alice" } } impl SyncHandler<WhatsYourName> for Bob { fn handle(&mut self, _: WhatsYourName, _ctx: &mut Context<Self>) -> &'static str { "Bob" } } #[smol_potat::main] async fn main() { let channels = [Alice.spawn().into_channel(), Bob.spawn().into_channel()]; let name = ["Alice", "Bob"]; for (channel, name) in channels.iter().zip(&name) { assert_eq!(*name, channel.send(WhatsYourName).await.unwrap()); } }
Implementations
impl<M: Message> MessageChannel<M>
[src]
pub fn downgrade(&self) -> WeakMessageChannel<M>
[src]
Create a weak message channel to the actor. Unlike with the strong variety of channel (this kind), an actor will not be prevented from being dropped if only weak channels exist.
pub fn into_downgraded(self) -> WeakMessageChannel<M>
[src]
Converts this message channel into a weak channel to the actor. Unlike with the strong variety of channel (this kind), an actor will not be prevented from being dropped if only weak channels exist.
Trait Implementations
impl<M: Message> MessageChannelExt<M> for MessageChannel<M>
[src]
fn is_connected(&self) -> bool
[src]
fn do_send(&self, message: M) -> Result<(), Disconnected>
[src]
fn send(&self, message: M) -> MessageResponseFuture<M>
[src]
fn attach_stream<S>(self, stream: S) where
S: Stream<Item = M> + Send + Unpin + 'static,
Self: Sized + Send + Sink<M, Error = Disconnected> + 'static,
[src]
S: Stream<Item = M> + Send + Unpin + 'static,
Self: Sized + Send + Sink<M, Error = Disconnected> + 'static,
impl<M: Message> Sink<M> for MessageChannel<M>
[src]
type Error = Disconnected
The type of value produced by the sink when an error occurs.
fn poll_ready(
self: Pin<&mut Self>,
ctx: &mut Context
) -> Poll<Result<(), Self::Error>>
[src]
self: Pin<&mut Self>,
ctx: &mut Context
) -> Poll<Result<(), Self::Error>>
fn start_send(self: Pin<&mut Self>, message: M) -> Result<(), Self::Error>
[src]
fn poll_flush(
self: Pin<&mut Self>,
ctx: &mut Context
) -> Poll<Result<(), Self::Error>>
[src]
self: Pin<&mut Self>,
ctx: &mut Context
) -> Poll<Result<(), Self::Error>>
fn poll_close(
self: Pin<&mut Self>,
ctx: &mut Context
) -> Poll<Result<(), Self::Error>>
[src]
self: Pin<&mut Self>,
ctx: &mut Context
) -> Poll<Result<(), Self::Error>>
Auto Trait Implementations
impl<M> !RefUnwindSafe for MessageChannel<M>
impl<M> Send for MessageChannel<M>
impl<M> !Sync for MessageChannel<M>
impl<M> Unpin for MessageChannel<M>
impl<M> !UnwindSafe for MessageChannel<M>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, Item> SinkExt<Item> for T where
T: Sink<Item> + ?Sized,
[src]
T: Sink<Item> + ?Sized,
fn with<U, Fut, F, E>(self, f: F) -> With<Self, Item, U, Fut, F> where
E: From<Self::Error>,
F: FnMut(U) -> Fut,
Fut: Future<Output = Result<Item, E>>,
[src]
E: From<Self::Error>,
F: FnMut(U) -> Fut,
Fut: Future<Output = Result<Item, E>>,
fn with_flat_map<U, St, F>(self, f: F) -> WithFlatMap<Self, Item, U, St, F> where
F: FnMut(U) -> St,
St: Stream<Item = Result<Item, Self::Error>>,
[src]
F: FnMut(U) -> St,
St: Stream<Item = Result<Item, Self::Error>>,
fn sink_map_err<E, F>(self, f: F) -> SinkMapErr<Self, F> where
F: FnOnce(Self::Error) -> E,
[src]
F: FnOnce(Self::Error) -> E,
fn sink_err_into<E>(self) -> SinkErrInto<Self, Item, E> where
Self::Error: Into<E>,
[src]
Self::Error: Into<E>,
fn buffer(self, capacity: usize) -> Buffer<Self, Item>
[src]
fn close(&mut self) -> Close<Self, Item> where
Self: Unpin,
[src]
Self: Unpin,
fn fanout<Si>(self, other: Si) -> Fanout<Self, Si> where
Item: Clone,
Si: Sink<Item, Error = Self::Error>,
[src]
Item: Clone,
Si: Sink<Item, Error = Self::Error>,
fn flush(&mut self) -> Flush<Self, Item> where
Self: Unpin,
[src]
Self: Unpin,
fn send(&mut self, item: Item) -> Send<Self, Item> where
Self: Unpin,
[src]
Self: Unpin,
fn send_all<St>(&'a mut self, stream: &'a mut St) -> SendAll<'a, Self, St> where
Self: Unpin,
St: TryStream<Ok = Item, Error = Self::Error> + Stream + Unpin + ?Sized,
[src]
Self: Unpin,
St: TryStream<Ok = Item, Error = Self::Error> + Stream + Unpin + ?Sized,
fn left_sink<Si2>(self) -> Either<Self, Si2> where
Si2: Sink<Item, Error = Self::Error>,
[src]
Si2: Sink<Item, Error = Self::Error>,
fn right_sink<Si1>(self) -> Either<Si1, Self> where
Si1: Sink<Item, Error = Self::Error>,
[src]
Si1: Sink<Item, Error = Self::Error>,
fn poll_ready_unpin(
&mut self,
cx: &mut Context
) -> Poll<Result<(), Self::Error>> where
Self: Unpin,
[src]
&mut self,
cx: &mut Context
) -> Poll<Result<(), Self::Error>> where
Self: Unpin,
fn start_send_unpin(&mut self, item: Item) -> Result<(), Self::Error> where
Self: Unpin,
[src]
Self: Unpin,
fn poll_flush_unpin(
&mut self,
cx: &mut Context
) -> Poll<Result<(), Self::Error>> where
Self: Unpin,
[src]
&mut self,
cx: &mut Context
) -> Poll<Result<(), Self::Error>> where
Self: Unpin,
fn poll_close_unpin(
&mut self,
cx: &mut Context
) -> Poll<Result<(), Self::Error>> where
Self: Unpin,
[src]
&mut self,
cx: &mut Context
) -> Poll<Result<(), Self::Error>> where
Self: Unpin,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,