Skip to main content

xtra_addons/
from_registry_ext.rs

1use 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}