xtra_addons/
from_registry_ext.rs1use crate::*;
2use async_trait::async_trait;
3
4#[async_trait]
5pub trait FromRegistryExt: Actor {
6 async fn from_registry() -> Address<Self>;
7}
8
9#[async_trait]
10impl<A: Actor + Default> FromRegistryExt for A {
11 async fn from_registry() -> Address<Self> {
12 Registry::get_or_create_default::<Self>().await
13 }
14}
15
16#[async_trait]
17pub trait FromRegistryExtOpt: Actor {
18 async fn from_registry_opt() -> Option<Address<Self>>;
19}
20
21#[async_trait]
22impl<A: Actor> FromRegistryExtOpt for A {
23 async fn from_registry_opt() -> Option<Address<Self>> {
24 Registry::get::<Self>().await
25 }
26}
27
28#[cfg(test)]
29#[async_std::test]
30async fn test_from_registry() {
31 use FromRegistryExt;
32
33 #[derive(Default)]
34 struct A;
35 impl Actor for A {}
36
37 let _: Address<A> = A::from_registry().await;
38 assert!(true);
39}