webdav_headers/
overwrite.rs1use crate::OVERWRITE;
6
7#[derive(Copy, Clone, Debug, Default, PartialEq)]
9pub enum Overwrite {
10 F,
11 #[default]
12 T,
13}
14
15impl headers::Header for Overwrite {
16 fn name() -> &'static http::HeaderName {
17 &OVERWRITE
18 }
19
20 fn decode<'i, I>(values: &mut I) -> Result<Self, headers::Error>
21 where
22 Self: Sized,
23 I: Iterator<Item = &'i http::HeaderValue>,
24 {
25 values
26 .next()
27 .map(headers::HeaderValue::as_bytes)
28 .and_then(|s| match s {
29 b"F" | b"f" => Some(Overwrite::F),
30 b"T" | b"t" => Some(Overwrite::T),
31 _ => None,
32 })
33 .ok_or_else(headers::Error::invalid)
34 }
35
36 fn encode<E: Extend<http::HeaderValue>>(&self, values: &mut E) {
37 values.extend(std::iter::once(match self {
38 Overwrite::F => headers::HeaderValue::from_static("F"),
39 Overwrite::T => headers::HeaderValue::from_static("T"),
40 }))
41 }
42}
43
44#[cfg(test)]
45#[test]
46fn test() {
47 use crate::test::test_all;
48
49 test_all([("F", Overwrite::F), ("T", Overwrite::T)])
50}