Function nuts::new_domained_activity [−][src]
pub fn new_domained_activity<A, D>(activity: A, domain: &D) -> ActivityId<A> where
A: Activity,
D: DomainEnumeration,
Consumes a struct that is registered as an Activity that has access to the specified domain.
Use the returned ActivityId
to register callbacks on the activity.
use nuts::{domain_enum, DomainEnumeration}; #[derive(Default)] struct MyActivity; struct MyMessage; #[derive(Clone, Copy)] enum MyDomain { DomainA, DomainB, } domain_enum!(MyDomain); // Add data to domain nuts::store_to_domain(&MyDomain::DomainA, 42usize); // Register activity let activity_id = nuts::new_domained_activity(MyActivity, &MyDomain::DomainA); // Add event listener that listens to published `MyMessage` types and has also access to the domain data activity_id.subscribe_domained( |_my_activity, domain, msg: &MyMessage| { // borrow data from the domain let data = domain.try_get::<usize>(); assert_eq!(*data.unwrap(), 42); } ); // make sure the subscription closure is called nuts::publish( MyMessage );