1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
//! maker_web - High-performance, zero-allocation HTTP server for microservices
//!
//! A performance-oriented HTTP server with comprehensive configuration
//! for memory management, connection handling, and protocol support.
//! Designed for microservices requiring fine-grained control over resources.
//!
//! # Protocol Support
//!
//! - **HTTP/1.1**: Full protocol with persistent connections and chunked encoding
//! - **HTTP/1.0**: Basic protocol support for legacy clients and simple requests
//! - **HTTP/0.9+**: [High-performance variant with keep-alive and query support](limits::Http09Limits)
//!
//! # Features
//!
//! ## 🔒 Security & Protection
//! - **Built-in DoS/DDoS protection** - enabled by default, with no performance penalty.
//! - **Fully configurable limits and timeouts** for requests, responses, and connections.
//! - **Custom connection filtering** - implement the [`ConnectionFilter`] trait to
//! reject unwanted connections at the TCP level.
//!
//! ## 🚀 Performance & Memory
//! - **Zero-allocation** - no memory allocations after server startup.
//! - **Pre-allocated memory for each connection** - linear and transparent scaling.
//!
//! ## 🌐 Protocol & Management
//! - **Full HTTP stack** - `HTTP/1.1`, `HTTP/1.0`, [`HTTP/0.9+`
//! ](https://docs.rs/maker_web/latest/maker_web/limits/struct.Http09Limits.html)
//! with keep-alive.
//! - **Automatic protocol detection for each request** - keep-alive eliminates
//! the need for manual protocol selection.
//! - **Storing data between requests** - ability to store data between requests in a
//! single connection using the [`ConnectionData`] trait.
//!
//! ## 🏭 Production Ready
//! - **Graceful performance degradation** - automatic 503 responses when overloaded.
//! - [**Custom error format**
//! ](https://docs.rs/maker_web/latest/maker_web/limits/struct.ServerLimits.html#structfield.json_errors) -
//! structured JSON (with codes/descriptions) or a plain HTTP response.
//! - **Resource protection** - automatic closure of connections exceeding set limits.
//!
//! # Quick Start
//!
//! ## 1. Installation
//!
//! Add `maker_web` and [`tokio`](https://crates.io/crates/tokio) to your `Cargo.toml`:
//!
//! ```bash
//! cargo add maker_web tokio --features tokio/full
//! ```
//! Or manually:
//! ```toml
//! [dependencies]
//! maker_web = "0.1"
//! tokio = { version = "1", features = ["full"] }
//! ```
//!
//! ## 2. Usage example
//! ```no_run
//! use maker_web::{Server, Handler, Request, Response, Handled, StatusCode};
//! use tokio::net::TcpListener;
//!
//! struct MyHandler;
//!
//! impl Handler for MyHandler {
//! async fn handle(&self, _: &mut (), _: &Request, resp: &mut Response) -> Handled {
//! resp.status(StatusCode::Ok).body("Hello World!")
//! }
//! }
//!
//! #[tokio::main]
//! async fn main() {
//! Server::builder()
//! .listener(TcpListener::bind("127.0.0.1:8080").await.unwrap())
//! .handler(MyHandler)
//! .build()
//! .launch()
//! .await;
//! }
//! ```
//!
//! For more examples including connection filtering and advanced configuration,
//! see the crate documentation and
//! [`examples/`](https://github.com/AmakeSashaDev/maker_web/tree/main/examples)
//! directory.
//!
//! # Use Cases
//!
//! - **High-throughput microservices** - configurable for specific workloads
//! - **Resource-constrained environments** - predictable memory usage
//! - **Internal APIs** - security-conscious defaults
//! - **Performance-critical applications** - zero-allocation design
//! - **Legacy system integration** - HTTP/1.0 compatibility
//!
//! # 🌐 Beyond the Documentation
//! For live statistics, deeper insights, and ongoing project thoughts,
//! visit the [project website](https://amakesashadev.github.io/maker_web/).
pub
pub
pub
pub use crate::;
pub