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
//! Application: the type a server runs for every request.
//!
//! An [`Application`] gets each parsed [`Request`](crate::request::Request) and its
//! [`ConnectionInfo`](crate::server::ConnectionInfo) and returns a
//! [`Response`](crate::response::Response) (or an error message). The server runs
//! it on many threads, so it must be `Clone + Send + 'static`.
//!
//! The built-in [`App`](crate::app::App) is one: it starts from a `501` response
//! with the default headers and walks a list of
//! [`Controller`](crate::controller::Controller)s, each checking whether it
//! matches and, if so, filling in the response. Most code uses `App`,
//! [`Router`](crate::router::Router) or `App::with_state` instead of implementing
//! this trait directly; see `src/application/example/` for a hand-written one.
use crateRequest;
use crateResponse;
use crateConnectionInfo;
/// Dispatch trait that wires controllers into a request-handling loop.
///
/// Implement this to define which controllers run and in what order.
/// Pass the implementation to [`Server::run`] or [`Server::run_tls`].
///
/// The built-in [`App`](crate::app::App) implementation covers static files,
/// favicons, forms, and file uploads. Embed it or replace it entirely.
/// The future [`Application::execute_async`] returns.
pub type AsyncResponse<'a> = Pin;