tower_web/extract/
context.rs1use codegen::CallSite;
2use config::Config;
3use routing::{Captures, RouteMatch};
4
5use http::Request;
6
7#[derive(Debug)]
11pub struct Context<'a> {
12 callsite: &'a CallSite,
14
15 request: &'a Request<()>,
17
18 captures: &'a Captures,
19
20 config: &'a Config,
21}
22
23impl<'a> Context<'a> {
24 #[doc(hidden)]
26 pub fn new(route_match: &'a RouteMatch, callsite: &'a CallSite) -> Context<'a> {
27 let request = route_match.request();
28 let captures = route_match.captures();
29 let config = route_match.config();
30
31 Context {
32 callsite,
33 request,
34 captures,
35 config,
36 }
37 }
38
39 pub(crate) fn callsite(&self) -> &CallSite {
40 self.callsite
41 }
42
43 pub(crate) fn captures(&self) -> &Captures {
44 self.captures
45 }
46
47 pub fn request(&self) -> &Request<()> {
50 &self.request
51 }
52
53 pub fn config<T: Send + Sync + 'static>(&self) -> Option<&T> { self.config.get::<T>() }
55}