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 Fork, Layer, Service, bytes, combinators, conversion, error, error_sink, extensions, futures,
15 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(any(
110 all(feature = "std", feature = "proxy"),
111 all(feature = "std", feature = "haproxy"),
112 all(feature = "std", feature = "socks5")
113))]
114pub mod proxy {
115 #[cfg(feature = "proxy")]
118 #[cfg_attr(docsrs, doc(cfg(feature = "proxy")))]
119 #[doc(inline)]
120 pub use ::rama_proxy::*;
121
122 #[cfg(feature = "haproxy")]
123 #[cfg_attr(docsrs, doc(cfg(feature = "haproxy")))]
124 #[doc(inline)]
125 pub use ::rama_haproxy as haproxy;
126
127 #[cfg(feature = "socks5")]
128 #[cfg_attr(docsrs, doc(cfg(feature = "socks5")))]
129 #[doc(inline)]
130 pub use ::rama_socks5 as socks5;
131}
132
133#[cfg(all(feature = "std", feature = "fastcgi"))]
135#[cfg_attr(docsrs, doc(cfg(all(feature = "std", feature = "fastcgi"))))]
136pub mod gateway {
137 #[cfg(feature = "fastcgi")]
138 #[cfg_attr(docsrs, doc(cfg(feature = "fastcgi")))]
139 #[doc(inline)]
140 pub use ::rama_fastcgi as fastcgi;
141}
142
143#[cfg(feature = "ttrpc")]
148#[cfg_attr(docsrs, doc(cfg(feature = "ttrpc")))]
149#[doc(inline)]
150pub use ::rama_ttrpc as ttrpc;
151
152#[cfg(all(feature = "std", feature = "ua"))]
153#[cfg_attr(docsrs, doc(cfg(all(feature = "std", feature = "ua"))))]
154#[doc(inline)]
155pub use ::rama_ua as ua;
156
157#[cfg(all(feature = "std", feature = "cli"))]
158#[cfg_attr(docsrs, doc(cfg(all(feature = "std", feature = "cli"))))]
159pub mod cli;
160
161pub mod utils {
162 #[doc(inline)]
165 pub use ::rama_utils::*;
166
167 #[cfg(feature = "tower")]
168 #[cfg_attr(docsrs, doc(cfg(feature = "tower")))]
169 #[doc(inline)]
170 pub use ::rama_tower as tower;
171}