Skip to main content

deboa_compio/
lib.rs

1#[cfg(all(
2    feature = "rust-tls",
3    not(feature = "native-tls"),
4    not(all(
5        any(
6            feature = "no-provider",
7            feature = "default-rustls-provider",
8            feature = "aws-lc-rustls-provider",
9            feature = "ring-rustls-provider",
10        ),
11        any(
12            feature = "default-rustls-verifier",
13            feature = "webpki-rustls-verifier",
14            feature = "platform-rustls-verifier"
15        )
16    ))
17))]
18compile_error!(
19    "When enabling rust-tls features, you must also enable default-rustls-provider and default-rustls-verifier features."
20);
21
22#[cfg(all(feature = "native-tls", feature = "rust-tls"))]
23compile_error!("You cannot enable native-tls and rust-tls features at the same time.");
24
25#[cfg(all(not(any(feature = "native-tls", feature = "rust-tls")), feature = "http2"))]
26compile_error!("HTTP2 requires native-tls or rust-tls support.");
27
28#[cfg(all(feature = "native-tls", feature = "http3"))]
29compile_error!("HTTP3 is not supported within tokio-native-tls runtime.");
30
31#[cfg(not(any(feature = "http1", feature = "http2", feature = "http3")))]
32compile_error!("At least one HTTP version feature must be enabled.");
33
34use crate::{
35    cert::{DeboaCertificate, DeboaIdentity},
36    client::{dns::DefaultDnsResolver, http::conn::pool::HttpConnectionPool},
37};
38use deboa::InnerClient;
39
40pub mod cert;
41pub mod client;
42
43/// Inner client type with generic resolver.
44pub type RuntimeClient<Resolver> =
45    InnerClient<DeboaIdentity, DeboaCertificate, HttpConnectionPool, Resolver>;
46
47/// Type alias for the Tokio-based HTTP client.
48pub type Client = deboa::Client<RuntimeClient<DefaultDnsResolver>>;
49
50/// Type alias for the custom Tokio-based HTTP client.
51pub type CustomClient<Resolver> = deboa::Client<RuntimeClient<Resolver>>;