mixed_usage/
mixed_usage.rs1use bark_rs::{BarkMessage, Level, SyncBarkClient};
2
3#[cfg(feature = "async")]
4use bark_rs::AsyncBarkClient;
5
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7 println!("🔀 演示混合使用场景");
8
9 let shared_message = BarkMessage::builder()
11 .device_key("QJ48vPutCAsPW2B6pE2A3a")
12 .title("共享消息")
13 .body("这个消息可以被同步和异步客户端共用")
14 .level(Level::Active)
15 .sound("telegraph")
16 .build();
17
18 let sync_client = SyncBarkClient::new("https://api.day.app");
20 let sync_response = sync_client.send(&shared_message)?;
21 println!("✅ 同步发送成功: {}", sync_response.message);
22
23 #[cfg(feature = "async")]
25 {
26 println!("🔄 也可以在异步环境中使用...");
27 let rt = tokio::runtime::Runtime::new()?;
28 rt.block_on(async {
29 let async_client = AsyncBarkClient::new("https://api.day.app");
30 match async_client.send(&shared_message).await {
31 Ok(response) => println!("✅ 异步发送成功: {}", response.message),
32 Err(e) => println!("❌ 异步发送失败: {}", e),
33 }
34 });
35 }
36
37 #[cfg(not(feature = "async"))]
38 {
39 println!("ℹ️ 如需异步功能,请启用 'async' feature");
40 }
41
42 let another_client = SyncBarkClient::with_device_key("https://api.day.app", "default_key");
44
45 let modified_message = BarkMessage::builder()
47 .title("修改后的消息")
48 .body("基于原消息修改的新消息")
49 .level(shared_message.level.clone().unwrap_or(Level::Active))
50 .sound(
51 &shared_message
52 .sound
53 .clone()
54 .unwrap_or_else(|| "default".to_string()),
55 )
56 .badge(5)
57 .build();
58
59 let response = another_client.send(&modified_message)?;
60 println!("✅ 修改消息发送成功: {}", response.message);
61
62 println!("🎉 混合使用演示完成!");
63
64 Ok(())
65}