1#![doc = include_str!("lib_docs.md")]
2#![doc(
3 html_favicon_url = "https://raw.githubusercontent.com/plabayo/rama/main/docs/img/rama_logo.svg"
4)]
5#![doc(
6 html_logo_url = "https://raw.githubusercontent.com/plabayo/rama/main/docs/img/rama_logo.svg"
7)]
8#![cfg_attr(docsrs, feature(doc_cfg))]
9#![cfg_attr(all(not(feature = "std"), not(test)), no_std)]
10#![cfg_attr(test, allow(clippy::float_cmp))]
11
12#[doc(inline)]
13pub use ::rama_core::{
14 BlockingService, Fork, Layer, Service, bytes, combinators, conversion, error, error_sink,
15 extensions, futures, geo, layer, matcher, service, username,
16};
17
18#[cfg(feature = "std")]
19#[doc(inline)]
20pub use ::rama_core::{ServiceInput, graceful, io, rt, stream};
21
22#[cfg(feature = "std")]
23#[doc(inline)]
24pub use ::rama_json as json;
25
26#[cfg(all(feature = "std", feature = "js"))]
27#[cfg_attr(docsrs, doc(cfg(all(feature = "std", feature = "js"))))]
28pub mod js {
29 #[doc(inline)]
32 pub use ::rama_js::*;
33
34 #[cfg(feature = "pac")]
35 #[cfg_attr(docsrs, doc(cfg(feature = "pac")))]
36 #[doc(inline)]
37 pub use ::rama_pac as pac;
38}
39
40#[cfg(all(feature = "std", feature = "crypto"))]
41#[cfg_attr(docsrs, doc(cfg(all(feature = "std", feature = "crypto"))))]
42#[doc(inline)]
43pub use ::rama_crypto as crypto;
44
45#[cfg(all(target_family = "unix", feature = "unix"))]
46#[cfg_attr(docsrs, doc(cfg(all(target_family = "unix", feature = "unix"))))]
47#[doc(inline)]
48pub use ::rama_unix as unix;
49
50#[cfg(all(feature = "std", feature = "tcp"))]
51#[cfg_attr(docsrs, doc(cfg(all(feature = "std", feature = "tcp"))))]
52#[doc(inline)]
53pub use ::rama_tcp as tcp;
54
55#[cfg(all(feature = "std", feature = "udp"))]
56#[cfg_attr(docsrs, doc(cfg(all(feature = "std", feature = "udp"))))]
57#[doc(inline)]
58pub use ::rama_udp as udp;
59
60#[cfg(feature = "std")]
61pub mod telemetry;
62
63#[cfg(any(
64 all(feature = "std", feature = "tls"),
65 all(feature = "std", feature = "rustls"),
66 all(feature = "std", feature = "boring"),
67 all(feature = "std", feature = "acme")
68))]
69pub mod tls;
70
71#[cfg(all(feature = "std", feature = "dns"))]
72#[cfg_attr(docsrs, doc(cfg(all(feature = "std", feature = "dns"))))]
73#[doc(inline)]
74pub use ::rama_dns as dns;
75
76#[cfg(feature = "net")]
77pub mod net {
78 #[cfg_attr(docsrs, doc(cfg(feature = "net")))]
79 #[doc(inline)]
80 pub use ::rama_net::*;
81
82 #[cfg(any(
83 all(doc, docsrs),
84 all(
85 target_vendor = "apple",
86 any(feature = "net-apple-networkextension", feature = "net-apple-xpc")
87 )
88 ))]
89 #[cfg_attr(docsrs, doc(cfg(target_vendor = "apple")))]
90 pub mod apple {
91 #[cfg(feature = "net-apple-networkextension")]
94 #[cfg_attr(docsrs, doc(cfg(feature = "net-apple-networkextension")))]
95 #[doc(inline)]
96 pub use ::rama_net_apple_networkextension as networkextension;
97
98 #[cfg(feature = "net-apple-xpc")]
99 #[cfg_attr(docsrs, doc(cfg(feature = "net-apple-xpc")))]
100 #[doc(inline)]
101 pub use ::rama_net_apple_xpc as xpc;
102 }
103}
104
105#[cfg(all(feature = "std", feature = "http"))]
106#[cfg_attr(docsrs, doc(cfg(all(feature = "std", feature = "http"))))]
107pub mod http;
108
109#[cfg(feature = "icap")]
110#[cfg_attr(docsrs, doc(cfg(feature = "icap")))]
111#[doc(inline)]
112pub use ::rama_icap as icap;
113
114#[cfg(any(
115 all(feature = "std", feature = "proxy"),
116 all(feature = "std", feature = "haproxy"),
117 all(feature = "std", feature = "socks5")
118))]
119pub mod proxy {
120 #[cfg(feature = "proxy")]
123 #[cfg_attr(docsrs, doc(cfg(feature = "proxy")))]
124 #[doc(inline)]
125 pub use ::rama_proxy::*;
126
127 #[cfg(feature = "haproxy")]
128 #[cfg_attr(docsrs, doc(cfg(feature = "haproxy")))]
129 #[doc(inline)]
130 pub use ::rama_haproxy as haproxy;
131
132 #[cfg(feature = "socks5")]
133 #[cfg_attr(docsrs, doc(cfg(feature = "socks5")))]
134 #[doc(inline)]
135 pub use ::rama_socks5 as socks5;
136}
137
138#[cfg(all(feature = "std", feature = "fastcgi"))]
140#[cfg_attr(docsrs, doc(cfg(all(feature = "std", feature = "fastcgi"))))]
141pub mod gateway {
142 #[cfg(feature = "fastcgi")]
143 #[cfg_attr(docsrs, doc(cfg(feature = "fastcgi")))]
144 #[doc(inline)]
145 pub use ::rama_fastcgi as fastcgi;
146}
147
148#[cfg(feature = "ttrpc")]
153#[cfg_attr(docsrs, doc(cfg(feature = "ttrpc")))]
154#[doc(inline)]
155pub use ::rama_ttrpc as ttrpc;
156
157#[cfg(all(feature = "std", feature = "ua"))]
158#[cfg_attr(docsrs, doc(cfg(all(feature = "std", feature = "ua"))))]
159#[doc(inline)]
160pub use ::rama_ua as ua;
161
162#[cfg(all(feature = "std", feature = "cli"))]
163#[cfg_attr(docsrs, doc(cfg(all(feature = "std", feature = "cli"))))]
164pub mod cli;
165
166pub mod utils {
167 #[doc(inline)]
170 pub use ::rama_utils::*;
171
172 #[cfg(feature = "tower")]
173 #[cfg_attr(docsrs, doc(cfg(feature = "tower")))]
174 #[doc(inline)]
175 pub use ::rama_tower as tower;
176}