trello_to_deck/macros/
spawn.rs1#[macro_export]
4macro_rules! spawn {
5 ($parent:expr, $actor:expr) => {{
6 tracing::debug!("spawning : {}", $crate::stringify_expr!($actor));
7 let new_actor_ref = kameo::spawn($actor);
8 new_actor_ref.link(&$parent).await;
9 $parent.link(&new_actor_ref).await;
10 tracing::debug!("spawned : {}", $crate::stringify_expr!($actor));
11 new_actor_ref
12 }};
13}
14
15#[macro_export]
16macro_rules! stringify_expr {
17 ($expr:expr) => {
18 stringify!($expr).lines().collect::<Vec<_>>().join(" ")
19 };
20}
21
22#[test]
23fn remove_line_breaks() {
24 let out = stringify_expr!([
25 "line 1", "line 2", "line 3", "line 1", "line 2", "line 3", "line 1", "line 2", "line 3",
26 "line 1", "line 2", "line 3",
27 ]);
28 let expected = r#"["line 1", "line 2", "line 3", "line 1", "line 2", "line 3", "line 1", "line 2", "line 3", "line 1", "line 2", "line 3",]"#;
29
30 assert_eq!(out, expected);
31}
32
33#[macro_export]
34macro_rules! spawn_in_thread {
35 ($parent:expr, $actor:expr) => {{
36 tracing::debug!("spawning in thread : {}", $crate::stringify_expr!($actor));
37 let new_actor_ref = kameo::actor::spawn_in_thread($actor);
38 new_actor_ref.link(&$parent).await;
39 $parent.link(&new_actor_ref).await;
40 tracing::debug!("spawned in thread : {}", $crate::stringify_expr!($actor));
41 new_actor_ref
42 }};
43}