    Checking cblt v0.2.0 (C:\Users\igumn\cblt)
error: redundant else block
  --> src/main.rs:70:16
   |
70 |           } else {
   |  ________________^
71 | |             std::fs::File::create(reload_file_path)?;
72 | |             info!("Reloading 'Cbltfile'  has been initiated");
73 | |         }
   | |_________^
   |
   = help: remove the `else` block and move the contents out
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_else
   = note: `-D clippy::redundant-else` implied by `-D clippy::pedantic`
   = help: to override `-D clippy::pedantic` add `#[allow(clippy::redundant_else)]`

error: item name ends with its containing module's name
  --> src\config.rs:46:8
   |
46 | pub fn build_config(doc: &KdlDocument) -> Result<HashMap<String, Vec<Directive>>, CbltError> {
   |        ^^^^^^^^^^^^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_name_repetitions
   = note: `-D clippy::module-name-repetitions` implied by `-D clippy::pedantic`
   = help: to override `-D clippy::pedantic` add `#[allow(clippy::module_name_repetitions)]`

error: this function has too many lines (140/100)
   --> src\config.rs:46:1
    |
46  | / pub fn build_config(doc: &KdlDocument) -> Result<HashMap<String, Vec<Directive>>, CbltError> {
47  | |     let mut hosts = HashMap::new();
48  | |
49  | |     for node in doc.nodes() {
...   |
192 | |     Ok(hosts)
193 | | }
    | |_^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_lines
    = note: `-D clippy::too-many-lines` implied by `-D clippy::pedantic`
    = help: to override `-D clippy::pedantic` add `#[allow(clippy::too_many_lines)]`

error: calling `to_string` on `&&str`
  --> src\config.rs:61:43
   |
61 |   ...                   let pattern = args
   |  _____________________________________^
62 | | ...                       .first()
63 | | ...                       .ok_or(CbltError::KdlParseError {
64 | | ...                           details: "pattern absent".to_string(),
65 | | ...                       })?
66 | | ...                       .to_string();
   | |______________________________________^
   |
   = help: `&str` implements `ToString` through a slower blanket impl, but `str` has a fast specialization of `ToString`
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inefficient_to_string
   = note: `-D clippy::inefficient-to-string` implied by `-D clippy::pedantic`
   = help: to override `-D clippy::pedantic` add `#[allow(clippy::inefficient_to_string)]`
help: try dereferencing the receiver
   |
61 ~                             let pattern = (*args
62 +                                 .first()
63 +                                 .ok_or(CbltError::KdlParseError {
64 +                                     details: "pattern absent".to_string(),
65 ~                                 })?).to_string();
   |

error: calling `to_string` on `&&str`
  --> src\config.rs:67:40
   |
67 |   ...                   let path = args
   |  __________________________________^
68 | | ...                       .get(1)
69 | | ...                       .ok_or(CbltError::KdlParseError {
70 | | ...                           details: "path absent".to_string(),
71 | | ...                       })?
72 | | ...                       .to_string();
   | |______________________________________^
   |
   = help: `&str` implements `ToString` through a slower blanket impl, but `str` has a fast specialization of `ToString`
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inefficient_to_string
help: try dereferencing the receiver
   |
67 ~                             let path = (*args
68 +                                 .get(1)
69 +                                 .ok_or(CbltError::KdlParseError {
70 +                                     details: "path absent".to_string(),
71 ~                                 })?).to_string();
   |

error: matching over `()` is more explicit
  --> src\config.rs:75:47
   |
75 | ...                   .map_err(|_| CbltError::HeapLessError {})?,
   |                                 ^ help: use `()` instead of `_`: `()`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns
   = note: `-D clippy::ignored-unit-patterns` implied by `-D clippy::pedantic`
   = help: to override `-D clippy::pedantic` add `#[allow(clippy::ignored_unit_patterns)]`

error: matching over `()` is more explicit
  --> src\config.rs:77:47
   |
77 | ...                   .map_err(|_| CbltError::HeapLessError {})?,
   |                                 ^ help: use `()` instead of `_`: `()`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns

error: variables can be used directly in the `format!` string
  --> src\config.rs:81:42
   |
81 | ...                   details: format!("Invalid 'root' directive for host {}", hostname),
   |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
   = note: `-D clippy::uninlined-format-args` implied by `-D clippy::pedantic`
   = help: to override `-D clippy::pedantic` add `#[allow(clippy::uninlined_format_args)]`
help: change this to
   |
81 -                                 details: format!("Invalid 'root' directive for host {}", hostname),
81 +                                 details: format!("Invalid 'root' directive for host {hostname}"),
   |

error: calling `to_string` on `&&str`
  --> src\config.rs:91:43
   |
91 |   ...                   let pattern = args
   |  _____________________________________^
92 | | ...                       .first()
93 | | ...                       .ok_or(CbltError::KdlParseError {
94 | | ...                           details: "pattern absent".to_string(),
95 | | ...                       })?
96 | | ...                       .to_string();
   | |______________________________________^
   |
   = help: `&str` implements `ToString` through a slower blanket impl, but `str` has a fast specialization of `ToString`
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inefficient_to_string
help: try dereferencing the receiver
   |
91 ~                             let pattern = (*args
92 +                                 .first()
93 +                                 .ok_or(CbltError::KdlParseError {
94 +                                     details: "pattern absent".to_string(),
95 ~                                 })?).to_string();
   |

error: calling `to_string` on `&&str`
   --> src\config.rs:97:47
    |
97  |   ...                   let destination = args
    |  _________________________________________^
98  | | ...                       .get(1)
99  | | ...                       .ok_or(CbltError::KdlParseError {
100 | | ...                           details: "destination absent".to_string(),
101 | | ...                       })?
102 | | ...                       .to_string();
    | |______________________________________^
    |
    = help: `&str` implements `ToString` through a slower blanket impl, but `str` has a fast specialization of `ToString`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inefficient_to_string
help: try dereferencing the receiver
    |
97  ~                             let destination = (*args
98  +                                 .get(1)
99  +                                 .ok_or(CbltError::KdlParseError {
100 +                                     details: "destination absent".to_string(),
101 ~                                 })?).to_string();
    |

error: matching over `()` is more explicit
   --> src\config.rs:105:47
    |
105 | ...                   .map_err(|_| CbltError::HeapLessError {})?,
    |                                 ^ help: use `()` instead of `_`: `()`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns

error: matching over `()` is more explicit
   --> src\config.rs:107:47
    |
107 | ...                   .map_err(|_| CbltError::HeapLessError {})?,
    |                                 ^ help: use `()` instead of `_`: `()`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns

error: variables can be used directly in the `format!` string
   --> src\config.rs:111:42
    |
111 |   ...                   details: format!(
    |  ________________________________^
112 | | ...                       "Invalid 'reverse_proxy' directive for host {}",
113 | | ...                       hostname
114 | | ...                   ),
    | |_______________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args

error: unnecessary boolean `not` operation
   --> src\config.rs:120:25
    |
120 | /                         if !args.is_empty() {
121 | |                             let destination = args
122 | |                                 .first()
123 | |                                 .ok_or(CbltError::KdlParseError {
...   |
134 | |                             });
135 | |                         }
    | |_________________________^
    |
    = help: remove the `!` and swap the blocks of the `if`/`else`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else
    = note: `-D clippy::if-not-else` implied by `-D clippy::pedantic`
    = help: to override `-D clippy::pedantic` add `#[allow(clippy::if_not_else)]`

error: calling `to_string` on `&&str`
   --> src\config.rs:121:47
    |
121 |   ...                   let destination = args
    |  _________________________________________^
122 | | ...                       .first()
123 | | ...                       .ok_or(CbltError::KdlParseError {
124 | | ...                           details: "destination absent".to_string(),
125 | | ...                       })?
126 | | ...                       .to_string();
    | |______________________________________^
    |
    = help: `&str` implements `ToString` through a slower blanket impl, but `str` has a fast specialization of `ToString`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inefficient_to_string
help: try dereferencing the receiver
    |
121 ~                             let destination = (*args
122 +                                 .first()
123 +                                 .ok_or(CbltError::KdlParseError {
124 +                                     details: "destination absent".to_string(),
125 ~                                 })?).to_string();
    |

error: matching over `()` is more explicit
   --> src\config.rs:129:47
    |
129 | ...                   .map_err(|_| CbltError::HeapLessError {})?,
    |                                 ^ help: use `()` instead of `_`: `()`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns

error: variables can be used directly in the `format!` string
   --> src\config.rs:133:42
    |
133 | ...                   details: format!("Invalid 'redir' directive for host {}", hostname),
    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
help: change this to
    |
133 -                                 details: format!("Invalid 'redir' directive for host {}", hostname),
133 +                                 details: format!("Invalid 'redir' directive for host {hostname}"),
    |

error: calling `to_string` on `&&str`
   --> src\config.rs:140:45
    |
140 |   ...                   let cert_path = args
    |  _______________________________________^
141 | | ...                       .first()
142 | | ...                       .ok_or(CbltError::KdlParseError {
143 | | ...                           details: "cert path absent".to_string(),
144 | | ...                       })?
145 | | ...                       .to_string();
    | |______________________________________^
    |
    = help: `&str` implements `ToString` through a slower blanket impl, but `str` has a fast specialization of `ToString`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inefficient_to_string
help: try dereferencing the receiver
    |
140 ~                             let cert_path = (*args
141 +                                 .first()
142 +                                 .ok_or(CbltError::KdlParseError {
143 +                                     details: "cert path absent".to_string(),
144 ~                                 })?).to_string();
    |

error: calling `to_string` on `&&str`
   --> src\config.rs:146:44
    |
146 |   ...                   let key_path = args
    |  ______________________________________^
147 | | ...                       .get(1)
148 | | ...                       .ok_or(CbltError::KdlParseError {
149 | | ...                           details: "key path absent".to_string(),
150 | | ...                       })?
151 | | ...                       .to_string();
    | |______________________________________^
    |
    = help: `&str` implements `ToString` through a slower blanket impl, but `str` has a fast specialization of `ToString`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inefficient_to_string
help: try dereferencing the receiver
    |
146 ~                             let key_path = (*args
147 +                                 .get(1)
148 +                                 .ok_or(CbltError::KdlParseError {
149 +                                     details: "key path absent".to_string(),
150 ~                                 })?).to_string();
    |

error: matching over `()` is more explicit
   --> src\config.rs:154:47
    |
154 | ...                   .map_err(|_| CbltError::HeapLessError {})?,
    |                                 ^ help: use `()` instead of `_`: `()`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns

error: matching over `()` is more explicit
   --> src\config.rs:156:47
    |
156 | ...                   .map_err(|_| CbltError::HeapLessError {})?,
    |                                 ^ help: use `()` instead of `_`: `()`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns

error: variables can be used directly in the `format!` string
   --> src\config.rs:160:42
    |
160 | ...                   details: format!("Invalid 'tls' directive for host {}", hostname),
    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
help: change this to
    |
160 -                                 details: format!("Invalid 'tls' directive for host {}", hostname),
160 +                                 details: format!("Invalid 'tls' directive for host {hostname}"),
    |

error: variables can be used directly in the `format!` string
   --> src\config.rs:166:38
    |
166 |   ...                   details: format!(
    |  ________________________________^
167 | | ...                       "Unknown directive '{}' for host {}",
168 | | ...                       child_name, hostname
169 | | ...                   ),
    | |_______________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args

error: variables can be used directly in the `format!` string
   --> src\config.rs:178:26
    |
178 |                 details: format!("No directives specified for host {}", hostname),
    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
help: change this to
    |
178 -                 details: format!("No directives specified for host {}", hostname),
178 +                 details: format!("No directives specified for host {hostname}"),
    |

error: variables can be used directly in the `format!` string
   --> src\config.rs:184:26
    |
184 |                 details: format!("Host '{}' already exists", hostname),
    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
help: change this to
    |
184 -                 details: format!("Host '{}' already exists", hostname),
184 +                 details: format!("Host '{hostname}' already exists"),
    |

error: item name starts with its containing module's name
  --> src\directive.rs:19:14
   |
19 | pub async fn directive_process<S>(
   |              ^^^^^^^^^^^^^^^^^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_name_repetitions

error: this function has too many lines (173/100)
   --> src\directive.rs:19:1
    |
19  | / pub async fn directive_process<S>(
20  | |     socket: &mut S,
21  | |     hosts: &FnvIndexMap<
22  | |         heapless::String<STRING_CAPACITY>,
...   |
206 | |     }
207 | | }
    | |_^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_lines

error: single-character string constant used as pattern
  --> src\directive.rs:53:68
   |
53 |             let cfg_opt = hosts.iter().find(|(k, _)| k.starts_with("*"));
   |                                                                    ^^^ help: consider using a `char`: `'*'`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern
   = note: `-D clippy::single-char-pattern` implied by `-D clippy::pedantic`
   = help: to override `-D clippy::pedantic` add `#[allow(clippy::single_char_pattern)]`

error: matching over `()` is more explicit
  --> src\directive.rs:58:39
   |
58 | ...                   .map_err(|_| CbltError::HeapLessError {})?;
   |                                 ^ help: use `()` instead of `_`: `()`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns

error: this could be rewritten as `let...else`
  --> src\directive.rs:59:21
   |
59 | /                     let host_config = match hosts.get(&host_str) {
60 | |                         Some(cfg) => cfg,
61 | |                         None => {
62 | |                             let response = error_response(StatusCode::FORBIDDEN);
...  |
68 | |                         }
69 | |                     };
   | |______________________^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_let_else
   = note: `-D clippy::manual-let-else` implied by `-D clippy::pedantic`
   = help: to override `-D clippy::pedantic` add `#[allow(clippy::manual_let_else)]`
help: consider writing
   |
59 ~                     let Some(host_config) = hosts.get(&host_str) else {
60 +                             let response = error_response(StatusCode::FORBIDDEN);
61 +                             let _ = send_response(socket, response?).await;
62 +                             return Err(CbltError::ResponseError {
63 +                                 details: "Forbidden".to_string(),
64 +                                 status_code: StatusCode::FORBIDDEN,
65 +                             });
66 +                         };
   |

error: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
  --> src\directive.rs:59:39
   |
59 |                       let host_config = match hosts.get(&host_str) {
   |  _______________________________________^
60 | |                         Some(cfg) => cfg,
61 | |                         None => {
62 | |                             let response = error_response(StatusCode::FORBIDDEN);
...  |
68 | |                         }
69 | |                     };
   | |_____________________^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match_else
   = note: `-D clippy::single-match-else` implied by `-D clippy::pedantic`
   = help: to override `-D clippy::pedantic` add `#[allow(clippy::single_match_else)]`
help: try
   |
59 ~                     let host_config = if let Some(cfg) = hosts.get(&host_str) { cfg } else {
60 +                         let response = error_response(StatusCode::FORBIDDEN);
61 +                         let _ = send_response(socket, response?).await;
62 +                         return Err(CbltError::ResponseError {
63 +                             details: "Forbidden".to_string(),
64 +                             status_code: StatusCode::FORBIDDEN,
65 +                         });
66 ~                     };
   |

error: matching over `()` is more explicit
   --> src\directive.rs:184:32
    |
184 | ...                   Ok(_) => {
    |                          ^ help: use `()` instead of `_`: `()`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns

error: item name ends with its containing module's name
 --> src\error.rs:6:10
  |
6 | pub enum CbltError {
  |          ^^^^^^^^^
  |
  = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_name_repetitions

error: empty String is being created manually
  --> src\file_server.rs:24:22
   |
24 |             details: "".to_string(),
   |                      ^^^^^^^^^^^^^^ help: consider using: `String::new()`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_string_new
   = note: `-D clippy::manual-string-new` implied by `-D clippy::pedantic`
   = help: to override `-D clippy::pedantic` add `#[allow(clippy::manual_string_new)]`

error: item name ends with its containing module's name
  --> src\request.rs:15:14
   |
15 | pub async fn socket_to_request<S>(
   |              ^^^^^^^^^^^^^^^^^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_name_repetitions

error: this could be rewritten as `let...else`
  --> src\request.rs:33:17
   |
33 | /                 let (request, _) = match parse_request_headers(header_len, buf, socket).await? {
34 | |                     Some((req, content_length)) => (req, content_length),
35 | |                     None => {
36 | |                         return Err(CbltError::RequestError {
...  |
40 | |                     }
41 | |                 };
   | |__________________^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_let_else
help: consider writing
   |
33 ~                 let Some((request, _)) = parse_request_headers(header_len, buf, socket).await? else {
34 +                         return Err(CbltError::RequestError {
35 +                             details: "Bad request".to_string(),
36 +                             status_code: StatusCode::BAD_REQUEST,
37 +                         });
38 +                     };
   |

error: it is more concise to loop over references to containers instead of using explicit iteration methods
  --> src\response.rs:42:25
   |
42 |     for (key, value) in parts.headers.iter() {
   |                         ^^^^^^^^^^^^^^^^^^^^ help: to write this more concisely, try: `&parts.headers`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_iter_loop
   = note: `-D clippy::explicit-iter-loop` implied by `-D clippy::pedantic`
   = help: to override `-D clippy::pedantic` add `#[allow(clippy::explicit_iter_loop)]`

error: item name ends with its containing module's name
  --> src\response.rs:71:14
   |
71 | pub async fn ranged_file_response(
   |              ^^^^^^^^^^^^^^^^^^^^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_name_repetitions

error: adding items after statements is confusing, since items exist from the start of the scope
  --> src\response.rs:81:5
   |
81 |     use tokio::io::AsyncSeekExt;
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#items_after_statements
   = note: `-D clippy::items-after-statements` implied by `-D clippy::pedantic`
   = help: to override `-D clippy::pedantic` add `#[allow(clippy::items_after_statements)]`

error: variables can be used directly in the `format!` string
  --> src\response.rs:84:25
   |
84 |     let content_range = format!("bytes {}-{}/{}", start, end, file_size);
   |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
help: change this to
   |
84 -     let content_range = format!("bytes {}-{}/{}", start, end, file_size);
84 +     let content_range = format!("bytes {start}-{end}/{file_size}");
   |

error: called `map(<f>).unwrap_or(false)` on an `Option` value
   --> src\response.rs:100:5
    |
100 | /     accept_encoding
101 | |         .map(|encodings| encodings.contains("gzip"))
102 | |         .unwrap_or(false)
    | |_________________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or
    = note: `-D clippy::map-unwrap-or` implied by `-D clippy::pedantic`
    = help: to override `-D clippy::pedantic` add `#[allow(clippy::map_unwrap_or)]`
help: use `is_some_and(<f>)` instead
    |
101 -         .map(|encodings| encodings.contains("gzip"))
101 +         .is_some_and(|encodings| encodings.contains("gzip"))
    |

error: adding items after statements is confusing, since items exist from the start of the scope
   --> src\response.rs:149:5
    |
149 |     use futures_util::stream::StreamExt;
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#items_after_statements

error: it is more concise to loop over references to containers instead of using explicit iteration methods
   --> src\response.rs:135:25
    |
135 |     for (key, value) in parts.headers.iter() {
    |                         ^^^^^^^^^^^^^^^^^^^^ help: to write this more concisely, try: `&parts.headers`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_iter_loop

error: item name ends with its containing module's name
   --> src\response.rs:173:8
    |
173 | pub fn log_request_response(request: &Request<BytesMut>, status_code: StatusCode) {
    |        ^^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_name_repetitions

error: item name ends with its containing module's name
   --> src\response.rs:192:14
    |
192 | pub async fn send_response<S>(socket: &mut S, response: Response<BytesMut>) -> Result<(), CbltError>
    |              ^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_name_repetitions

error: it is more concise to loop over references to containers instead of using explicit iteration methods
   --> src\response.rs:212:25
    |
212 |     for (key, value) in parts.headers.iter() {
    |                         ^^^^^^^^^^^^^^^^^^^^ help: to write this more concisely, try: `&parts.headers`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_iter_loop

error: item name ends with its containing module's name
   --> src\response.rs:228:8
    |
228 | pub fn error_response(status: StatusCode) -> Result<Response<BytesMut>, CbltError> {
    |        ^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_name_repetitions

error: it is more concise to loop over references to containers instead of using explicit iteration methods
  --> src\reverse_proxy.rs:28:29
   |
28 |         for (key, value) in request.headers().iter() {
   |                             ^^^^^^^^^^^^^^^^^^^^^^^^ help: to write this more concisely, try: `request.headers()`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_iter_loop

error: it is more concise to loop over references to containers instead of using explicit iteration methods
  --> src\reverse_proxy.rs:41:37
   |
41 |                 for (key, value) in headers.iter() {
   |                                     ^^^^^^^^^^^^^^ help: to write this more concisely, try: `headers`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_iter_loop

error: unnecessary `!=` operation
  --> src\reverse_proxy.rs:47:17
   |
47 | /                 if status != StatusCode::OK {
48 | |                     Err(CbltError::ResponseError {
49 | |                         details: "Bad gateway".to_string(),
50 | |                         status_code: status,
...  |
53 | |                     Ok(status)
54 | |                 }
   | |_________________^
   |
   = help: change to `==` and swap the blocks of the `if`/`else`
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else

error: item name starts with its containing module's name
  --> src\server.rs:31:12
   |
31 | pub struct ServerWorker {
   |            ^^^^^^^^^^^^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_name_repetitions

error: item name starts with its containing module's name
  --> src\server.rs:37:12
   |
37 | pub struct ServerSettings {
   |            ^^^^^^^^^^^^^^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_name_repetitions

error: large future with a size of 108848 bytes
  --> src/main.rs:58:9
   |
58 |         server(num_cpus).await?;
   |         ^^^^^^^^^^^^^^^^ help: consider `Box::pin` on it: `Box::pin(server(num_cpus))`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_futures
   = note: `-D clippy::large-futures` implied by `-D clippy::pedantic`
   = help: to override `-D clippy::pedantic` add `#[allow(clippy::large_futures)]`

error: large future with a size of 108752 bytes
  --> src/main.rs:87:5
   |
87 |     process_workers(args.clone(), server_workers.clone(), servers.clone()).await?;
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Box::pin` on it: `Box::pin(process_workers(args.clone(), server_workers.clone(), servers.clone()))`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_futures

error: large future with a size of 108752 bytes
  --> src/main.rs:96:21
   |
96 |                     process_workers(args.clone(), server_workers.clone(), servers).await
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Box::pin` on it: `Box::pin(process_workers(args.clone(), server_workers.clone(), servers))`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_futures

error: large future with a size of 36200 bytes
   --> src/main.rs:130:13
    |
130 |             worker.update(server.hosts, server.cert, server.key).await?;
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Box::pin` on it: `Box::pin(worker.update(server.hosts, server.cert, server.key))`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_futures

error: large future with a size of 36080 bytes
   --> src/main.rs:141:39
    |
141 |                     if let Err(err) = server_worker.run(args.max_connections).await {
    |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Box::pin` on it: `Box::pin(server_worker.run(args.max_connections))`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_futures

error: needless use of `for_each`
   --> src/main.rs:164:9
    |
164 | /         directives.iter().for_each(|d| {
165 | |             if let Directive::TlS { cert, key } = d {
166 | |                 port = 443;
167 | |                 cert_path = Some(cert.to_string());
168 | |                 key_path = Some(key.to_string());
169 | |             }
170 | |         });
    | |___________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_for_each
    = note: `-D clippy::needless-for-each` implied by `-D clippy::pedantic`
    = help: to override `-D clippy::pedantic` add `#[allow(clippy::needless_for_each)]`
help: try
    |
164 ~         for d in directives.iter() {
165 +             if let Directive::TlS { cert, key } = d {
166 +                 port = 443;
167 +                 cert_path = Some(cert.to_string());
168 +                 key_path = Some(key.to_string());
169 +             }
170 +         }
    |

error: matching over `()` is more explicit
   --> src/main.rs:177:31
    |
177 |                     .map_err(|_| CbltError::HeapLessError {})?,
    |                               ^ help: use `()` instead of `_`: `()`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns

error: matching over `()` is more explicit
   --> src/main.rs:186:31
    |
186 |                     .map_err(|_| CbltError::HeapLessError {})?,
    |                               ^ help: use `()` instead of `_`: `()`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns

error: matching over `()` is more explicit
   --> src/main.rs:199:39
    |
199 | ...                   .map_err(|_| CbltError::HeapLessError {})?,
    |                                 ^ help: use `()` instead of `_`: `()`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns

error: matching over `()` is more explicit
   --> src/main.rs:201:39
    |
201 | ...                   .map_err(|_| CbltError::HeapLessError {})?,
    |                                 ^ help: use `()` instead of `_`: `()`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns

error: assigning the result of `Clone::clone()` may be inefficient
   --> src/main.rs:204:17
    |
204 |                 server.get_mut().cert = cert_path.clone();
    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `clone_from()`: `server.get_mut().cert.clone_from(&cert_path)`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assigning_clones
    = note: `-D clippy::assigning-clones` implied by `-D clippy::pedantic`
    = help: to override `-D clippy::pedantic` add `#[allow(clippy::assigning_clones)]`

error: assigning the result of `Clone::clone()` may be inefficient
   --> src/main.rs:205:17
    |
205 |                 server.get_mut().key = key_path.clone();
    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `clone_from()`: `server.get_mut().key.clone_from(&key_path)`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assigning_clones

error: matching over `()` is more explicit
   --> src/main.rs:214:39
    |
214 | ...                   .map_err(|_| CbltError::HeapLessError {})?,
    |                                 ^ help: use `()` instead of `_`: `()`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns

error: matching over `()` is more explicit
   --> src/main.rs:216:39
    |
216 | ...                   .map_err(|_| CbltError::HeapLessError {})?,
    |                                 ^ help: use `()` instead of `_`: `()`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns

error: unused `async` for function with no await statements
   --> src\server.rs:124:5
    |
124 | /     pub async fn update(
125 | |         &mut self,
126 | |         hosts: FnvIndexMap<
127 | |             heapless::String<STRING_CAPACITY>,
...   |
140 | |         Ok(())
141 | |     }
    | |_____^
    |
    = help: consider removing the `async` from this function
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_async
    = note: `-D clippy::unused-async` implied by `-D clippy::pedantic`
    = help: to override `-D clippy::pedantic` add `#[allow(clippy::unused_async)]`

error: could not compile `cblt` (bin "cblt") due to 67 previous errors
