pub struct MessageBroker<C: Component> { /* private fields */ }
Expand description

A type that can be used in static variables to pass messages to components.

The primary use-case for this type is to communicate between components on different levels.

Imagine you have three components: A, B and C. A and B are children of the main application, but C is a child of B. If C wants to pass a message to A, it relies on B to forward that message to A. This is not great because B has nothing to do this message but has to implement additional logic only to pass the message through. MessageBroker allows you to use statics to remove this limitation.

Note

MessageBroker will not forward any messages until you initialize them with ComponentBuilder::launch_with_broker().

Only initialize the message broker once!

use relm4::{MessageBroker, Component};

static MY_COMPONENT: MessageBroker<MyComponent> = MessageBroker::new();

// Initialize the component and the message broker with `launch_with_broker`.
let controller = MyComponent::builder().launch_with_broker((), &MY_COMPONENT).detach();

Implementations§

source§

impl<C: Component> MessageBroker<C>

source

pub const fn new() -> Self

Creates a new MessageBroker.

The returned message broker will not forward messages until it’s initialized.

Examples found in repository?
relm4/examples/message_broker.rs (line 10)
10
static HEADER_BROKER: MessageBroker<Header> = MessageBroker::new();
More examples
Hide additional examples
relm4/examples/transient_dialog.rs (line 10)
10
static DIALOG_BROKER: MessageBroker<Dialog> = MessageBroker::new();
source

pub fn sender(&self) -> &Sender<C::Input>

Get the input sender of the component.

source

pub fn send(&self, input: C::Input)

Send an input message to the component.

Trait Implementations§

source§

impl<C: Debug + Component> Debug for MessageBroker<C>

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<C> RefUnwindSafe for MessageBroker<C>

§

impl<C> Send for MessageBroker<C>where <C as Component>::Input: Send,

§

impl<C> Sync for MessageBroker<C>where <C as Component>::Input: Send,

§

impl<C> Unpin for MessageBroker<C>

§

impl<C> UnwindSafe for MessageBroker<C>

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<C> AsyncPosition<()> for C

source§

fn position(_index: usize)

Returns the position. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · 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 Twhere U: From<T>,

const: unstable · 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<C> Position<()> for C

source§

fn position(&self, _index: usize)

Returns the position. Read more
source§

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

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · 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