sark_core/http/response/
header_name.rs1use http::HeaderName;
2
3pub trait HeaderNameRef: sealed::SealedHeaderNameRef {
4 fn as_header_name(&self) -> &str;
5}
6
7impl HeaderNameRef for HeaderName {
8 fn as_header_name(&self) -> &str {
9 self.as_str()
10 }
11}
12
13impl HeaderNameRef for &HeaderName {
14 fn as_header_name(&self) -> &str {
15 self.as_str()
16 }
17}
18
19impl HeaderNameRef for str {
20 fn as_header_name(&self) -> &str {
21 self
22 }
23}
24
25impl HeaderNameRef for &str {
26 fn as_header_name(&self) -> &str {
27 self
28 }
29}
30
31impl HeaderNameRef for String {
32 fn as_header_name(&self) -> &str {
33 self.as_str()
34 }
35}
36
37pub trait IntoHeaderName: sealed::SealedIntoHeaderName {
38 fn into_header_name(self) -> HeaderName;
39}
40
41impl IntoHeaderName for HeaderName {
42 fn into_header_name(self) -> HeaderName {
43 self
44 }
45}
46
47impl IntoHeaderName for &HeaderName {
48 fn into_header_name(self) -> HeaderName {
49 self.clone()
50 }
51}
52
53impl IntoHeaderName for &str {
54 fn into_header_name(self) -> HeaderName {
55 HeaderName::from_bytes(self.as_bytes()).expect("invalid header name")
56 }
57}
58
59impl IntoHeaderName for String {
60 fn into_header_name(self) -> HeaderName {
61 HeaderName::from_bytes(self.as_bytes()).expect("invalid header name")
62 }
63}
64
65mod sealed {
66 pub trait SealedHeaderNameRef {}
67 pub trait SealedIntoHeaderName {}
68
69 impl SealedHeaderNameRef for http::HeaderName {}
70 impl SealedHeaderNameRef for &http::HeaderName {}
71 impl SealedHeaderNameRef for str {}
72 impl SealedHeaderNameRef for &str {}
73 impl SealedHeaderNameRef for String {}
74
75 impl SealedIntoHeaderName for http::HeaderName {}
76 impl SealedIntoHeaderName for &http::HeaderName {}
77 impl SealedIntoHeaderName for &str {}
78 impl SealedIntoHeaderName for String {}
79}