Skip to main content

rama/
lib.rs

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    //! Embedded javascript execution, see [`rama_js`] for more info.
30
31    #[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        //! Apple (vendor) specific network modules
92
93        #[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    //! rama proxy support
116
117    #[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/// Application server gateway protocols (FastCGI, and similar).
134#[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/// ttRPC ("gRPC for low-memory environments") support.
144///
145/// Unlike `grpc`, ttRPC does not ride on HTTP/2, it is a length-prefixed framing
146/// directly on the byte stream, used by container runtimes and their plugins.
147#[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    //! utilities for rama
163
164    #[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}