[][src]Type Definition d3_components::components::AnySender

type AnySender = Arc<dyn Any + Send + Sync>;

Shorthand for an anonymous sender, that can be sent instructions from a specific instruction set. The following example illustrates how to convert an AnySender to a ComponentSender.

Examples

/// Consume `sender` returning either `Some(sender: ComponentSender)` or 'None'.
fn as_component_sender(any_sender: AnySender) -> Option<ComponentSender>
{
    if let Ok(sender) = any_sender.downcast::<ComponentSender>() {
        // pull out the sender and clone it, as its not copyable
        Some((*sender).clone())
    } else {
        None
    }
}
let (sender, receiver) = channel::<ComponentCmd>();
let any_sender: AnySender = Arc::new(sender);
assert_eq!(as_component_sender(any_sender).is_some(), true);

let (sender, receiver) = channel::<StateTable>();
let any_sender: AnySender = Arc::new(sender);
assert_eq!(as_component_sender(any_sender).is_some(), false);

}