sub/
sub.rs

1use ratpub::Node;
2use ros2_interfaces_jazzy_rkyv::std_msgs::msg;
3
4#[tokio::main]
5async fn main() -> anyhow::Result<()> {
6    env_logger::init();
7
8    let node = Node::create("node2".to_owned()).await?;
9    let mut subber = node
10        .create_subscriber::<msg::String>("/some_topic".to_owned(), 10)
11        .await?;
12    let pubber = node
13        .create_publisher::<msg::String>("/another_topic".to_owned())
14        .await?;
15    let pubber2 = node
16        .create_publisher::<msg::String>("/boring_topic".to_owned())
17        .await?;
18
19    let msg_out = msg::String {
20        data: "sup".to_owned(),
21    };
22
23    let boring_msg = msg::String {
24        data: "🙄".to_owned(),
25    };
26
27    let mut pubbing = tokio::time::interval(std::time::Duration::from_millis(4320));
28
29    tokio::spawn(async move {
30        loop {
31            pubbing.tick().await;
32            pubber2.publish(&boring_msg).await.unwrap();
33        }
34    });
35
36    while let Some(msg) = subber.next().await {
37        println!("Got: {}", &msg.data);
38        pubber.publish(&msg_out).await.unwrap();
39    }
40
41    Ok(())
42}