Skip to main content

BarkClient

Struct BarkClient 

Source
pub struct BarkClient { /* private fields */ }
Expand description

同步 Bark 推送客户端

使用 reqwest 的 blocking 客户端实现,无需异步运行时,可以在任何环境下工作。 支持单个设备推送和批量推送功能。

§创建客户端

use bark_rs::SyncBarkClient;

// 创建没有默认设备密钥的客户端
let client = SyncBarkClient::new("https://api.day.app");

// 创建带有默认设备密钥的客户端
let client = SyncBarkClient::with_device_key("https://api.day.app", "your_device_key");

§发送消息

use bark_rs::{SyncBarkClient, BarkMessage, Level};

let client = SyncBarkClient::with_device_key("https://api.day.app", "your_key");

// 方式 1: 使用 message() 方法的 Builder 模式
let response = client
    .message()
    .title("标题")
    .body("内容")
    .level(Level::Active)
    .send()?;

// 方式 2: 先构建消息再发送
let message = BarkMessage::builder()
    .title("标题")
    .body("内容")
    .build();

let response = client.send(&message)?;

Implementations§

Source§

impl SyncBarkClient

Source

pub fn new(base_url: &str) -> Self

创建新的同步 Bark 客户端

创建一个没有默认设备密钥的客户端实例。发送消息时需要在消息中指定设备密钥, 或者使用 SyncBarkClient::with_device_key 创建带默认密钥的客户端。

§参数
  • base_url - Bark 服务器的基础 URL(如 https://api.day.app
§示例
use bark_rs::SyncBarkClient;

let client = SyncBarkClient::new("https://api.day.app");
Examples found in repository?
examples/batch_push.rs (line 5)
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4    // 创建同步客户端
5    let client = SyncBarkClient::new("https://api.day.app");
6
7    // 批量推送到多个设备
8    let response = client
9        .message()
10        .device_keys(vec![
11            "QJ48vPutCAsPW2B6pE2A3a".to_string(),
12            "device_key_2".to_string(),
13            "device_key_3".to_string(),
14        ])
15        .title("批量推送通知")
16        .body("这是一个发送给多个设备的批量消息")
17        .level(Level::TimeSensitive)
18        .volume(7)
19        .badge(1)
20        .group("批量通知")
21        .send()?;
22
23    println!(
24        "批量推送成功: code={}, message={}",
25        response.code, response.message
26    );
27
28    Ok(())
29}
More examples
Hide additional examples
examples/error_handling.rs (line 7)
3fn main() {
4    println!("🚨 演示错误处理");
5
6    // 创建没有默认设备密钥的客户端
7    let client = SyncBarkClient::new("https://api.day.app");
8
9    // 尝试发送没有设备密钥的消息
10    let message_without_key = BarkMessage::builder()
11        .title("错误演示")
12        .body("这个消息没有设备密钥")
13        .build();
14
15    match client.send(&message_without_key) {
16        Ok(_) => println!("❌ 意外成功"),
17        Err(BarkError::MissingDeviceKey) => {
18            println!("✅ 正确捕获到缺少设备密钥错误");
19        }
20        Err(e) => println!("❓ 其他错误: {}", e),
21    }
22
23    // 演示正确的错误处理模式
24    let result = client
25        .message()
26        .device_key("QJ48vPutCAsPW2B6pE2A3a")
27        .title("正确的消息")
28        .body("这个消息有设备密钥")
29        .send();
30
31    match result {
32        Ok(response) => {
33            println!(
34                "✅ 消息发送成功: code={}, message={}",
35                response.code, response.message
36            );
37        }
38        Err(BarkError::RequestError(e)) => {
39            println!("❌ 网络请求错误: {}", e);
40        }
41        Err(BarkError::MissingDeviceKey) => {
42            println!("❌ 缺少设备密钥");
43        }
44        Err(BarkError::SerializationError(e)) => {
45            println!("❌ 序列化错误: {}", e);
46        }
47        Err(BarkError::InvalidUrl) => {
48            println!("❌ 无效URL");
49        }
50    }
51
52    println!("🎉 错误处理演示完成!");
53}
examples/mixed_usage.rs (line 19)
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7    println!("🔀 演示混合使用场景");
8
9    // 创建一个消息,可以被不同的客户端使用
10    let shared_message = BarkMessage::builder()
11        .device_key("QJ48vPutCAsPW2B6pE2A3a")
12        .title("共享消息")
13        .body("这个消息可以被同步和异步客户端共用")
14        .level(Level::Active)
15        .sound("telegraph")
16        .build();
17
18    // 使用同步客户端发送
19    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    // 如果启用了异步功能,演示异步发送
24    #[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    // 演示消息复用
43    let another_client = SyncBarkClient::with_device_key("https://api.day.app", "default_key");
44
45    // 克隆消息并修改部分内容
46    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}
Source

pub fn with_device_key(base_url: &str, device_key: &str) -> Self

创建带有默认设备密钥的同步 Bark 客户端

创建一个具有默认设备密钥的客户端实例。如果消息中没有指定设备密钥, 将使用这里设置的默认密钥。消息中的密钥设置会覆盖默认密钥。

§参数
  • base_url - Bark 服务器的基础 URL
  • device_key - 默认的设备密钥
§示例
use bark_rs::SyncBarkClient;

let client = SyncBarkClient::with_device_key(
    "https://api.day.app",
    "your_device_key"
);
Examples found in repository?
examples/sync_client.rs (line 5)
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4    // 创建同步客户端(带默认设备密钥)
5    let client = SyncBarkClient::with_device_key("https://api.day.app", "QJ48vPutCAsPW2B6pE2A3a");
6
7    // 方式1: 使用客户端的链式调用
8    let response = client
9        .message()
10        .title("同步推送")
11        .body("这是同步客户端发送的消息")
12        .level(Level::Active)
13        .volume(7)
14        .send()?;
15
16    println!(
17        "同步推送成功: code={}, message={}",
18        response.code, response.message
19    );
20
21    // 方式2: 先构建消息,再发送
22    let message = BarkMessage::builder()
23        .title("独立构建的消息")
24        .body("消息构建与发送分离")
25        .level(Level::Critical)
26        .sound("alarm")
27        .badge(1)
28        .build();
29
30    let response = client.send(&message)?;
31    println!(
32        "独立消息发送成功: code={}, message={}",
33        response.code, response.message
34    );
35
36    Ok(())
37}
More examples
Hide additional examples
examples/message_builder.rs (line 44)
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4    // 演示消息构建的各种方式
5    println!("🛠️  演示消息构建功能");
6
7    // 方式1: 使用 BarkMessage::builder()
8    let message1 = BarkMessage::builder()
9        .title("Builder 模式")
10        .body("使用 BarkMessage::builder() 构建")
11        .level(Level::Active)
12        .sound("minuet")
13        .build();
14
15    // 方式2: 使用 BarkMessage::new()
16    let message2 = BarkMessage::new()
17        .title("New 方法")
18        .body("使用 BarkMessage::new() 构建")
19        .level(Level::TimeSensitive)
20        .volume(6)
21        .build();
22
23    // 方式3: 完整参数演示
24    let complete_message = BarkMessage::builder()
25        .title("完整参数演示")
26        .subtitle("副标题")
27        .body("这是一个包含所有参数的消息")
28        .level(Level::Critical)
29        .volume(8)
30        .badge(3)
31        .call(true)
32        .auto_copy(false)
33        .copy("自定义复制内容")
34        .sound("alarm")
35        .icon("https://example.com/icon.png")
36        .group("演示组")
37        .is_archive(true)
38        .url("https://example.com")
39        .action("none")
40        .id("demo_message_001")
41        .build();
42
43    // 创建同步客户端来发送这些消息
44    let client = SyncBarkClient::with_device_key("https://api.day.app", "QJ48vPutCAsPW2B6pE2A3a");
45
46    println!("📤 发送消息1...");
47    let response1 = client.send(&message1)?;
48    println!("✅ 消息1发送成功: {}", response1.message);
49
50    println!("📤 发送消息2...");
51    let response2 = client.send(&message2)?;
52    println!("✅ 消息2发送成功: {}", response2.message);
53
54    println!("📤 发送完整消息...");
55    let response3 = client.send(&complete_message)?;
56    println!("✅ 完整消息发送成功: {}", response3.message);
57
58    println!("🎉 所有消息发送完成!");
59
60    Ok(())
61}
examples/mixed_usage.rs (line 43)
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7    println!("🔀 演示混合使用场景");
8
9    // 创建一个消息,可以被不同的客户端使用
10    let shared_message = BarkMessage::builder()
11        .device_key("QJ48vPutCAsPW2B6pE2A3a")
12        .title("共享消息")
13        .body("这个消息可以被同步和异步客户端共用")
14        .level(Level::Active)
15        .sound("telegraph")
16        .build();
17
18    // 使用同步客户端发送
19    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    // 如果启用了异步功能,演示异步发送
24    #[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    // 演示消息复用
43    let another_client = SyncBarkClient::with_device_key("https://api.day.app", "default_key");
44
45    // 克隆消息并修改部分内容
46    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}
Source

pub fn message(&self) -> SyncBarkMessageBuilder<'_>

创建消息构建器

返回一个与此客户端关联的消息构建器,支持链式调用来构建和发送消息。

§返回值

返回 SyncBarkMessageBuilder 实例

§示例
use bark_rs::{SyncBarkClient, Level};

let client = SyncBarkClient::with_device_key("https://api.day.app", "key");

let response = client
    .message()
    .title("标题")
    .body("内容")
    .level(Level::Active)
    .send()?;
Examples found in repository?
examples/batch_push.rs (line 9)
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4    // 创建同步客户端
5    let client = SyncBarkClient::new("https://api.day.app");
6
7    // 批量推送到多个设备
8    let response = client
9        .message()
10        .device_keys(vec![
11            "QJ48vPutCAsPW2B6pE2A3a".to_string(),
12            "device_key_2".to_string(),
13            "device_key_3".to_string(),
14        ])
15        .title("批量推送通知")
16        .body("这是一个发送给多个设备的批量消息")
17        .level(Level::TimeSensitive)
18        .volume(7)
19        .badge(1)
20        .group("批量通知")
21        .send()?;
22
23    println!(
24        "批量推送成功: code={}, message={}",
25        response.code, response.message
26    );
27
28    Ok(())
29}
More examples
Hide additional examples
examples/sync_client.rs (line 9)
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4    // 创建同步客户端(带默认设备密钥)
5    let client = SyncBarkClient::with_device_key("https://api.day.app", "QJ48vPutCAsPW2B6pE2A3a");
6
7    // 方式1: 使用客户端的链式调用
8    let response = client
9        .message()
10        .title("同步推送")
11        .body("这是同步客户端发送的消息")
12        .level(Level::Active)
13        .volume(7)
14        .send()?;
15
16    println!(
17        "同步推送成功: code={}, message={}",
18        response.code, response.message
19    );
20
21    // 方式2: 先构建消息,再发送
22    let message = BarkMessage::builder()
23        .title("独立构建的消息")
24        .body("消息构建与发送分离")
25        .level(Level::Critical)
26        .sound("alarm")
27        .badge(1)
28        .build();
29
30    let response = client.send(&message)?;
31    println!(
32        "独立消息发送成功: code={}, message={}",
33        response.code, response.message
34    );
35
36    Ok(())
37}
examples/error_handling.rs (line 25)
3fn main() {
4    println!("🚨 演示错误处理");
5
6    // 创建没有默认设备密钥的客户端
7    let client = SyncBarkClient::new("https://api.day.app");
8
9    // 尝试发送没有设备密钥的消息
10    let message_without_key = BarkMessage::builder()
11        .title("错误演示")
12        .body("这个消息没有设备密钥")
13        .build();
14
15    match client.send(&message_without_key) {
16        Ok(_) => println!("❌ 意外成功"),
17        Err(BarkError::MissingDeviceKey) => {
18            println!("✅ 正确捕获到缺少设备密钥错误");
19        }
20        Err(e) => println!("❓ 其他错误: {}", e),
21    }
22
23    // 演示正确的错误处理模式
24    let result = client
25        .message()
26        .device_key("QJ48vPutCAsPW2B6pE2A3a")
27        .title("正确的消息")
28        .body("这个消息有设备密钥")
29        .send();
30
31    match result {
32        Ok(response) => {
33            println!(
34                "✅ 消息发送成功: code={}, message={}",
35                response.code, response.message
36            );
37        }
38        Err(BarkError::RequestError(e)) => {
39            println!("❌ 网络请求错误: {}", e);
40        }
41        Err(BarkError::MissingDeviceKey) => {
42            println!("❌ 缺少设备密钥");
43        }
44        Err(BarkError::SerializationError(e)) => {
45            println!("❌ 序列化错误: {}", e);
46        }
47        Err(BarkError::InvalidUrl) => {
48            println!("❌ 无效URL");
49        }
50    }
51
52    println!("🎉 错误处理演示完成!");
53}
Source

pub fn send(&self, message: &BarkMessage) -> Result<BarkResponse>

发送 Bark 推送消息

根据消息是否包含多个设备密钥自动选择单个发送或批量发送。 如果消息和客户端都没有设备密钥,将返回错误。

§参数
  • message - 要发送的消息
§返回值

成功时返回 BarkResponse,失败时返回 BarkError

§错误
§示例
use bark_rs::{SyncBarkClient, BarkMessage};

let client = SyncBarkClient::with_device_key("https://api.day.app", "key");
let message = BarkMessage::builder()
    .body("测试消息")
    .build();

let response = client.send(&message)?;
println!("发送成功: {}", response.message);
Examples found in repository?
examples/sync_client.rs (line 30)
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4    // 创建同步客户端(带默认设备密钥)
5    let client = SyncBarkClient::with_device_key("https://api.day.app", "QJ48vPutCAsPW2B6pE2A3a");
6
7    // 方式1: 使用客户端的链式调用
8    let response = client
9        .message()
10        .title("同步推送")
11        .body("这是同步客户端发送的消息")
12        .level(Level::Active)
13        .volume(7)
14        .send()?;
15
16    println!(
17        "同步推送成功: code={}, message={}",
18        response.code, response.message
19    );
20
21    // 方式2: 先构建消息,再发送
22    let message = BarkMessage::builder()
23        .title("独立构建的消息")
24        .body("消息构建与发送分离")
25        .level(Level::Critical)
26        .sound("alarm")
27        .badge(1)
28        .build();
29
30    let response = client.send(&message)?;
31    println!(
32        "独立消息发送成功: code={}, message={}",
33        response.code, response.message
34    );
35
36    Ok(())
37}
More examples
Hide additional examples
examples/error_handling.rs (line 15)
3fn main() {
4    println!("🚨 演示错误处理");
5
6    // 创建没有默认设备密钥的客户端
7    let client = SyncBarkClient::new("https://api.day.app");
8
9    // 尝试发送没有设备密钥的消息
10    let message_without_key = BarkMessage::builder()
11        .title("错误演示")
12        .body("这个消息没有设备密钥")
13        .build();
14
15    match client.send(&message_without_key) {
16        Ok(_) => println!("❌ 意外成功"),
17        Err(BarkError::MissingDeviceKey) => {
18            println!("✅ 正确捕获到缺少设备密钥错误");
19        }
20        Err(e) => println!("❓ 其他错误: {}", e),
21    }
22
23    // 演示正确的错误处理模式
24    let result = client
25        .message()
26        .device_key("QJ48vPutCAsPW2B6pE2A3a")
27        .title("正确的消息")
28        .body("这个消息有设备密钥")
29        .send();
30
31    match result {
32        Ok(response) => {
33            println!(
34                "✅ 消息发送成功: code={}, message={}",
35                response.code, response.message
36            );
37        }
38        Err(BarkError::RequestError(e)) => {
39            println!("❌ 网络请求错误: {}", e);
40        }
41        Err(BarkError::MissingDeviceKey) => {
42            println!("❌ 缺少设备密钥");
43        }
44        Err(BarkError::SerializationError(e)) => {
45            println!("❌ 序列化错误: {}", e);
46        }
47        Err(BarkError::InvalidUrl) => {
48            println!("❌ 无效URL");
49        }
50    }
51
52    println!("🎉 错误处理演示完成!");
53}
examples/message_builder.rs (line 47)
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4    // 演示消息构建的各种方式
5    println!("🛠️  演示消息构建功能");
6
7    // 方式1: 使用 BarkMessage::builder()
8    let message1 = BarkMessage::builder()
9        .title("Builder 模式")
10        .body("使用 BarkMessage::builder() 构建")
11        .level(Level::Active)
12        .sound("minuet")
13        .build();
14
15    // 方式2: 使用 BarkMessage::new()
16    let message2 = BarkMessage::new()
17        .title("New 方法")
18        .body("使用 BarkMessage::new() 构建")
19        .level(Level::TimeSensitive)
20        .volume(6)
21        .build();
22
23    // 方式3: 完整参数演示
24    let complete_message = BarkMessage::builder()
25        .title("完整参数演示")
26        .subtitle("副标题")
27        .body("这是一个包含所有参数的消息")
28        .level(Level::Critical)
29        .volume(8)
30        .badge(3)
31        .call(true)
32        .auto_copy(false)
33        .copy("自定义复制内容")
34        .sound("alarm")
35        .icon("https://example.com/icon.png")
36        .group("演示组")
37        .is_archive(true)
38        .url("https://example.com")
39        .action("none")
40        .id("demo_message_001")
41        .build();
42
43    // 创建同步客户端来发送这些消息
44    let client = SyncBarkClient::with_device_key("https://api.day.app", "QJ48vPutCAsPW2B6pE2A3a");
45
46    println!("📤 发送消息1...");
47    let response1 = client.send(&message1)?;
48    println!("✅ 消息1发送成功: {}", response1.message);
49
50    println!("📤 发送消息2...");
51    let response2 = client.send(&message2)?;
52    println!("✅ 消息2发送成功: {}", response2.message);
53
54    println!("📤 发送完整消息...");
55    let response3 = client.send(&complete_message)?;
56    println!("✅ 完整消息发送成功: {}", response3.message);
57
58    println!("🎉 所有消息发送完成!");
59
60    Ok(())
61}
examples/mixed_usage.rs (line 20)
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7    println!("🔀 演示混合使用场景");
8
9    // 创建一个消息,可以被不同的客户端使用
10    let shared_message = BarkMessage::builder()
11        .device_key("QJ48vPutCAsPW2B6pE2A3a")
12        .title("共享消息")
13        .body("这个消息可以被同步和异步客户端共用")
14        .level(Level::Active)
15        .sound("telegraph")
16        .build();
17
18    // 使用同步客户端发送
19    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    // 如果启用了异步功能,演示异步发送
24    #[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    // 演示消息复用
43    let another_client = SyncBarkClient::with_device_key("https://api.day.app", "default_key");
44
45    // 克隆消息并修改部分内容
46    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}

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,