Skip to content

feat(volo-http): support merging routers #671

feat(volo-http): support merging routers

feat(volo-http): support merging routers #671

GitHub Actions / clippy succeeded Dec 7, 2023 in 2s

clippy

60 warnings

Details

Results

Message level Amount
Internal compiler error 0
Error 0
Warning 60
Note 0
Help 0

Versions

  • rustc 1.76.0-nightly (1fdfe1234 2023-12-06)
  • cargo 1.76.0-nightly (978722961 2023-12-06)
  • clippy 0.1.76 (1fdfe12 2023-12-06)

Annotations

Check warning on line 39 in examples/src/http/simple.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

accessing first element with `request .phones.get(0)`

warning: accessing first element with `request
                 .phones.get(0)`
  --> examples/src/http/simple.rs:37:23
   |
37 |       let first_phone = request
   |  _______________________^
38 | |         .phones
39 | |         .get(0)
   | |_______________^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first
   = note: `#[warn(clippy::get_first)]` on by default
help: try
   |
37 ~     let first_phone = request
38 +         .phones.first()
   |

Check warning on line 113 in volo-grpc/src/transport/connect.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

using `clone` on type `DefaultMakeTransport` which implements the `Copy` trait

warning: using `clone` on type `DefaultMakeTransport` which implements the `Copy` trait
   --> volo-grpc/src/transport/connect.rs:113:31
    |
113 |                 let mk_conn = mk_conn.clone();
    |                               ^^^^^^^^^^^^^^^ help: try dereferencing it: `*mk_conn`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
    = note: `#[warn(clippy::clone_on_copy)]` on by default

Check warning on line 454 in volo-grpc/src/status.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

use of `unwrap_or_else` to construct default value

warning: use of `unwrap_or_else` to construct default value
   --> volo-grpc/src/status.rs:454:18
    |
454 |                 .unwrap_or_else(Bytes::new);
    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default
    = note: `#[warn(clippy::unwrap_or_default)]` on by default

Check warning on line 183 in volo-http/src/server.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

useless conversion to the same type: `hyper::body::Incoming`

warning: useless conversion to the same type: `hyper::body::Incoming`
   --> volo-http/src/server.rs:183:27
    |
183 |                 let req = req.into();
    |                           ^^^^^^^^^^ help: consider removing `.into()`: `req`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
    = note: `#[warn(clippy::useless_conversion)]` on by default

Check warning on line 394 in volo-http/src/route.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

you should consider adding a `Default` implementation for `MethodRouterBuilder<S>`

warning: you should consider adding a `Default` implementation for `MethodRouterBuilder<S>`
   --> volo-http/src/route.rs:390:5
    |
390 | /     pub fn new() -> Self {
391 | |         Self {
392 | |             router: MethodRouter::new(),
393 | |         }
394 | |     }
    | |_____^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default
help: try adding this
    |
386 + impl<S> Default for MethodRouterBuilder<S>
387 + where
388 +     S: Clone + Send + Sync + 'static,
389 +  {
390 +     fn default() -> Self {
391 +         Self::new()
392 +     }
393 + }
    |

Check warning on line 256 in volo-http/src/route.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

you should consider adding a `Default` implementation for `MethodRouter<S>`

warning: you should consider adding a `Default` implementation for `MethodRouter<S>`
   --> volo-http/src/route.rs:243:5
    |
243 | /     pub fn new() -> Self {
244 | |         Self {
245 | |             options: MethodEndpoint::None,
246 | |             get: MethodEndpoint::None,
...   |
255 | |         }
256 | |     }
    | |_____^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default
help: try adding this
    |
239 + impl<S> Default for MethodRouter<S>
240 + where
241 +     S: Clone + Send + Sync + 'static,
242 +  {
243 +     fn default() -> Self {
244 +         Self::new()
245 +     }
246 + }
    |

Check warning on line 210 in volo-http/src/route.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

this let-binding has unit value

warning: this let-binding has unit value
   --> volo-http/src/route.rs:207:9
    |
207 | /         let _ = self
208 | |             .router
209 | |             .insert(uri, route_id)
210 | |             .map_err(MatcherError::RouterInsertError)?;
    | |_______________________________________________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value
    = note: `#[warn(clippy::let_unit_value)]` on by default
help: omit the `let` binding
    |
207 ~         self
208 +             .router
209 +             .insert(uri, route_id)
210 +             .map_err(MatcherError::RouterInsertError)?;
    |

Check warning on line 54 in volo-http/src/route.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

you should consider adding a `Default` implementation for `Router<S>`

warning: you should consider adding a `Default` implementation for `Router<S>`
  --> volo-http/src/route.rs:47:5
   |
47 | /     pub fn new() -> Self {
48 | |         Self {
49 | |             matcher: Default::default(),
50 | |             routes: Default::default(),
...  |
53 | |         }
54 | |     }
   | |_____^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default
   = note: `#[warn(clippy::new_without_default)]` on by default
help: try adding this
   |
43 + impl<S> Default for Router<S>
44 + where
45 +     S: Clone + Send + Sync + 'static,
46 +  {
47 +     fn default() -> Self {
48 +         Self::new()
49 +     }
50 + }
   |

Check warning on line 20 in volo-http/src/layer.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

very complex type used. Consider factoring parts into `type` definitions

warning: very complex type used. Consider factoring parts into `type` definitions
  --> volo-http/src/layer.rs:20:10
   |
20 |     ) -> FilterLayer<Box<dyn Fn(&mut HttpContext, &Request) -> Result<(), StatusCode>>>
   |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity
   = note: `#[warn(clippy::type_complexity)]` on by default

Check warning on line 159 in volo-thrift/src/codec/default/mod.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

try not to call a closure in the expression where it is declared

warning: try not to call a closure in the expression where it is declared
   --> volo-thrift/src/codec/default/mod.rs:136:28
    |
136 |           let write_result = (|| async {
    |  ____________________________^
137 | |             self.linked_bytes.reset();
138 | |             // then we reserve the size of the message in the linked bytes
139 | |             self.linked_bytes.reserve(malloc_size);
...   |
158 | |             Ok::<(), crate::Error>(())
159 | |         })()
    | |____________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_call
    = note: `#[warn(clippy::redundant_closure_call)]` on by default
help: try doing something like
    |
136 ~         let write_result = async {
137 +             self.linked_bytes.reset();
138 +             // then we reserve the size of the message in the linked bytes
139 +             self.linked_bytes.reserve(malloc_size);
140 +             // after that, we encode the message into the linked bytes
141 +             self.encoder
142 +                 .encode(cx, &mut self.linked_bytes, msg)
143 +                 .map_err(|e| {
144 +                     // record the error time
145 +                     cx.stats_mut().record_encode_end_at();
146 +                     e
147 +                 })?;
148 + 
149 +             cx.stats_mut().record_encode_end_at();
150 +             cx.stats_mut().record_write_start_at(); // encode end is also write start
151 + 
152 +             self.linked_bytes
153 +                 .write_all_vectored(&mut self.writer)
154 +                 .await
155 +                 .map_err(TransportError::from)?;
156 +             self.writer.flush().await.map_err(TransportError::from)?;
157 + 
158 +             Ok::<(), crate::Error>(())
159 +         }
    |

Check warning on line 136 in volo-thrift/src/codec/default/ttheader.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

unneeded `return` statement

warning: unneeded `return` statement
   --> volo-thrift/src/codec/default/ttheader.rs:136:13
    |
136 |             return self.inner.decode_async(cx, reader).await;
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
    |
136 -             return self.inner.decode_async(cx, reader).await;
136 +             self.inner.decode_async(cx, reader).await
    |

Check warning on line 140 in volo-thrift/src/codec/default/framed.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

unneeded `return` statement

warning: unneeded `return` statement
   --> volo-thrift/src/codec/default/framed.rs:140:13
    |
140 |             return self.inner.decode_async(cx, reader).await;
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
    = note: `#[warn(clippy::needless_return)]` on by default
help: remove `return`
    |
140 -             return self.inner.decode_async(cx, reader).await;
140 +             self.inner.decode_async(cx, reader).await
    |

Check warning on line 640 in volo-thrift/src/client/mod.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)`

warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)`
   --> volo-thrift/src/client/mod.rs:607:13
    |
607 | /             cache
608 | |                 .pop()
609 | |                 .and_then(|mut cx| {
610 | |                     // The generated code only push the cx to the cache, we need to reset
...   |
639 | |                     Some(cx)
640 | |                 })
    | |__________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map
    = note: `#[warn(clippy::bind_instead_of_map)]` on by default
help: try
    |
609 ~                 .map(|mut cx| {
610 |                     // The generated code only push the cx to the cache, we need to reset
  ...
638 |                     cx.rpc_info_mut().method = Some(FastStr::from_static_str(method));
639 ~                     cx
    |

Check warning on line 37 in volo-thrift/src/transport/pingpong/server.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

this function has too many arguments (8/7)

warning: this function has too many arguments (8/7)
  --> volo-thrift/src/transport/pingpong/server.rs:21:1
   |
21 | / pub async fn serve<Svc, Req, Resp, E, D, SP>(
22 | |     mut encoder: E,
23 | |     mut decoder: D,
24 | |     notified: Notified<'_>,
...  |
36 | |     D: Decoder,
37 | |     SP: SpanProvider,
   | |_____________________^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments
   = note: `#[warn(clippy::too_many_arguments)]` on by default

Check warning on line 302 in volo-thrift/src/error.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

use of a fallible conversion when an infallible one could be used

warning: use of a fallible conversion when an infallible one could be used
   --> volo-thrift/src/error.rs:302:61
    |
302 |                     let remote_kind: ApplicationErrorKind = TryFrom::try_from(remote_type_as_int)
    |                                                             ^^^^^^^^^^^^^^^^^ help: use: `From::from`
    |
    = note: converting `i32` to `ApplicationErrorKind` cannot fail
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fallible_conversions

Check warning on line 261 in volo-thrift/src/error.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

use of a fallible conversion when an infallible one could be used

warning: use of a fallible conversion when an infallible one could be used
   --> volo-thrift/src/error.rs:261:61
    |
261 |                     let remote_kind: ApplicationErrorKind = TryFrom::try_from(remote_type_as_int)
    |                                                             ^^^^^^^^^^^^^^^^^ help: use: `From::from`
    |
    = note: converting `i32` to `ApplicationErrorKind` cannot fail
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fallible_conversions
    = note: `#[warn(clippy::unnecessary_fallible_conversions)]` on by default

Check warning on line 3 in volo-thrift/src/protocol/mod.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

unused imports: `TFieldIdentifier`, `TListIdentifier`, `TMapIdentifier`, `TSetIdentifier`, `TStructIdentifier`, `TType`

warning: unused imports: `TFieldIdentifier`, `TListIdentifier`, `TMapIdentifier`, `TSetIdentifier`, `TStructIdentifier`, `TType`
 --> volo-thrift/src/protocol/mod.rs:3:13
  |
3 |     binary, TFieldIdentifier, TInputProtocol, TLengthProtocol, TListIdentifier, TMapIdentifier,
  |             ^^^^^^^^^^^^^^^^                                   ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
4 |     TMessageIdentifier, TMessageType, TOutputProtocol, TSetIdentifier, TStructIdentifier, TType,
  |                                                        ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^

Check warning on line 1 in volo-thrift/src/protocol/mod.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

unused import: `binary::TBinaryProtocol`

warning: unused import: `binary::TBinaryProtocol`
 --> volo-thrift/src/protocol/mod.rs:1:9
  |
1 | pub use binary::TBinaryProtocol;
  |         ^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

Check warning on line 53 in volo/src/client.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

this function can be simplified using the `async fn` syntax

warning: this function can be simplified using the `async fn` syntax
  --> volo/src/client.rs:49:5
   |
49 | /     fn call<'cx>(
50 | |         self,
51 | |         cx: &'cx mut Cx,
52 | |         req: Req,
53 | |     ) -> impl Future<Output = Result<Self::Response, Self::Error>> + Send {
   | |_________________________________________________________________________^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_async_fn
   = note: `#[warn(clippy::manual_async_fn)]` on by default
help: make the function `async` and return the output of the future directly
   |
49 ~     async fn call<'cx>(
50 +         self,
51 +         cx: &'cx mut Cx,
52 +         req: Req,
53 ~     ) -> Result<Self::Response, Self::Error> {
   |
help: move the body of the async block to the enclosing function
   |
53 ~     ) -> impl Future<Output = Result<Self::Response, Self::Error>> + Send {
54 +         self.opt.apply(cx)?;
55 +         self.inner.call(cx, req).await
56 +     }
   |

Check warning on line 49 in volo/src/client.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

the following explicit lifetimes could be elided: 'cx

warning: the following explicit lifetimes could be elided: 'cx
  --> volo/src/client.rs:49:13
   |
49 |     fn call<'cx>(
   |             ^^^
50 |         self,
51 |         cx: &'cx mut Cx,
   |              ^^^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes
help: elide the lifetimes
   |
49 ~     fn call'_>(
50 |         self,
51 ~         cx: &mut Cx,
   |

Check warning on line 30 in volo/src/client.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

the following explicit lifetimes could be elided: 'cx

warning: the following explicit lifetimes could be elided: 'cx
  --> volo/src/client.rs:30:13
   |
30 |     fn call<'cx>(
   |             ^^^
31 |         self,
32 |         cx: &'cx mut Cx,
   |              ^^^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes
   = note: `#[warn(clippy::needless_lifetimes)]` on by default
help: elide the lifetimes
   |
30 ~     fn call'_>(
31 |         self,
32 ~         cx: &mut Cx,
   |

Check warning on line 415 in volo/src/hotrestart/mod.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

unneeded `return` statement

warning: unneeded `return` statement
   --> volo/src/hotrestart/mod.rs:415:17
    |
415 |                 return Err(e);
    |                 ^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
    |
415 -                 return Err(e);
415 +                 Err(e)
    |

Check warning on line 412 in volo/src/hotrestart/mod.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

unneeded `return` statement

warning: unneeded `return` statement
   --> volo/src/hotrestart/mod.rs:409:17
    |
409 | /                 return Err(io::Error::new(
410 | |                     io::ErrorKind::InvalidData,
411 | |                     "Not PassFdResponse",
412 | |                 ));
    | |__________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
    |
409 ~                 Err(io::Error::new(
410 +                     io::ErrorKind::InvalidData,
411 +                     "Not PassFdResponse",
412 ~                 ))
    |

Check warning on line 406 in volo/src/hotrestart/mod.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

unneeded `return` statement

warning: unneeded `return` statement
   --> volo/src/hotrestart/mod.rs:406:17
    |
406 |                 return Ok(Some(fd));
    |                 ^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
    |
406 -                 return Ok(Some(fd));
406 +                 Ok(Some(fd))
    |

Check warning on line 279 in volo/src/hotrestart/mod.rs

See this annotation in the file changed.

@github-actions github-actions / clippy

useless conversion to the same type: `std::io::Error`

warning: useless conversion to the same type: `std::io::Error`
   --> volo/src/hotrestart/mod.rs:279:28
    |
279 |                 return Err(e.into());
    |                            ^^^^^^^^ help: consider removing `.into()`: `e`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
    = note: `#[warn(clippy::useless_conversion)]` on by default