feat: add support for rust_http_proxy #4
Annotations
5 errors and 49 warnings
buid-test-check (ubuntu-latest)
Process completed with exit code 101.
|
buid-test-check (windows-latest)
The job was canceled because "ubuntu-latest" failed.
|
buid-test-check (windows-latest)
The operation was canceled.
|
buid-test-check (macos-latest)
The job was canceled because "ubuntu-latest" failed.
|
buid-test-check (macos-latest)
The operation was canceled.
|
transmute used without annotations:
crates/shadowsocks-service/src/local/tun/tcp.rs#L172
warning: transmute used without annotations
--> crates/shadowsocks-service/src/local/tun/tcp.rs:172:38
|
172 | let recv_buf = unsafe { mem::transmute::<_, &mut [u8]>(buf.unfilled_mut()) };
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider adding missing annotations: `transmute::<&mut [std::mem::MaybeUninit<u8>], &mut [u8]>`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_transmute_annotations
= note: `#[warn(clippy::missing_transmute_annotations)]` on by default
|
unnecessary closure used to substitute value for `Option::None`:
crates/shadowsocks-service/src/local/socks/server/mod.rs#L114
warning: unnecessary closure used to substitute value for `Option::None`
--> crates/shadowsocks-service/src/local/socks/server/mod.rs:114:46
|
114 | let udp_associate_addr: ServerAddr = self
| ______________________________________________^
115 | | .udp_associate_addr
116 | | .as_ref()
117 | | .or_else(|| self.udp_bind_addr.as_ref())
| |______________--------------------------------------^
| |
| help: use `or(..)` instead: `or(self.udp_bind_addr.as_ref())`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations
|
unnecessary closure used to substitute value for `Option::None`:
crates/shadowsocks-service/src/local/socks/server/mod.rs#L114
warning: unnecessary closure used to substitute value for `Option::None`
--> crates/shadowsocks-service/src/local/socks/server/mod.rs:114:46
|
114 | let udp_associate_addr: ServerAddr = self
| ______________________________________________^
115 | | .udp_associate_addr
116 | | .as_ref()
117 | | .or_else(|| self.udp_bind_addr.as_ref())
118 | | .unwrap_or_else(|| &self.client_config)
| |______________-------------------------------------^
| |
| help: use `unwrap_or(..)` instead: `unwrap_or(&self.client_config)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations
= note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default
|
this `match` can be collapsed into the outer `if let`:
crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/linux.rs#L77
warning: this `match` can be collapsed into the outer `if let`
--> crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/linux.rs:77:21
|
77 | / match errno {
78 | | libc::ENOPROTOOPT => {
79 | | // SO_REUSEPORT is supported after 3.9
80 | | trace!("failed to set SO_REUSEPORT, error: {}", err);
... |
85 | | }
86 | | }
| |_____________________^
|
help: the outer pattern can be modified to include the inner pattern
--> crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/linux.rs:76:29
|
76 | if let Some(errno) = err.raw_os_error() {
| ^^^^^ replace this binding
77 | match errno {
78 | libc::ENOPROTOOPT => {
| ^^^^^^^^^^^^^^^^^ with this pattern
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match
= note: `#[warn(clippy::collapsible_match)]` on by default
|
this expression creates a reference which is immediately dereferenced by the compiler:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L98
warning: this expression creates a reference which is immediately dereferenced by the compiler
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:98:23
|
98 | wait_response(&mut stream).await?;
| ^^^^^^^^^^^ help: change this to: `stream`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
= note: `#[warn(clippy::needless_borrow)]` on by default
|
current MSRV (Minimum Supported Rust Version) is `1.74.0` but this item is stable since `1.80.0`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L50
warning: current MSRV (Minimum Supported Rust Version) is `1.74.0` but this item is stable since `1.80.0`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:50:44
|
50 | static CONNECTOR: LazyLock<TlsConnector> = LazyLock::new(|| {
| ^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv
= note: `#[warn(clippy::incompatible_msrv)]` on by default
|
casting the result of `i32::abs()` to u32:
crates/shadowsocks-service/src/local/loadbalancing/server_stat.rs#L191
warning: casting the result of `i32::abs()` to u32
--> crates/shadowsocks-service/src/local/loadbalancing/server_stat.rs:191:30
|
191 | .map(|s| (*s as i32 - self.data.latency_median as i32).abs() as u32)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `(*s as i32 - self.data.latency_median as i32).unsigned_abs()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_abs_to_unsigned
= note: `#[warn(clippy::cast_abs_to_unsigned)]` on by default
|
using `clone` on type `ServerStatData` which implements the `Copy` trait:
crates/shadowsocks-service/src/local/loadbalancing/server_data.rs#L69
warning: using `clone` on type `ServerStatData` which implements the `Copy` trait
--> crates/shadowsocks-service/src/local/loadbalancing/server_data.rs:69:9
|
69 | self.stat_data.lock().await.data().clone()
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.stat_data.lock().await.data()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
|
using `clone` on type `ServerStatData` which implements the `Copy` trait:
crates/shadowsocks-service/src/local/loadbalancing/server_data.rs#L56
warning: using `clone` on type `ServerStatData` which implements the `Copy` trait
--> crates/shadowsocks-service/src/local/loadbalancing/server_data.rs:56:38
|
56 | (stat.push_score(score), stat.data().clone())
| ^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*stat.data()`
|
= 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
|
redundant pattern matching, consider using `is_ok()`:
crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs#L919
warning: redundant pattern matching, consider using `is_ok()`
--> crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs:919:16
|
919 | if let Ok(..) = response.parse(&buf) {
| -------^^^^^^----------------------- help: try: `if response.parse(&buf).is_ok()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching
|
redundant pattern matching, consider using `is_ok()`:
crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs#L878
warning: redundant pattern matching, consider using `is_ok()`
--> crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs:878:16
|
878 | if let Ok(..) = response.parse(&buf) {
| -------^^^^^^----------------------- help: try: `if response.parse(&buf).is_ok()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching
= note: `#[warn(clippy::redundant_pattern_matching)]` on by default
|
unused import: `AbstractDevice`:
crates/shadowsocks-service/src/local/tun/mod.rs#L32
warning: unused import: `AbstractDevice`
--> crates/shadowsocks-service/src/local/tun/mod.rs:32:78
|
32 | create_as_async, AsyncDevice, Configuration as TunConfiguration, AbstractDevice, Error as TunError, Layer,
| ^^^^^^^^^^^^^^
|
unused import: `ops::Add`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L6
warning: unused import: `ops::Add`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:6:5
|
6 | ops::Add,
| ^^^^^^^^
|
unused variable: `flow_stat`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L166
warning: unused variable: `flow_stat`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:166:13
|
166 | let flow_stat = context.flow_stat();
| ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flow_stat`
|
= note: `#[warn(unused_variables)]` on by default
|
variable does not need to be mutable:
crates/shadowsocks-service/src/local/http/http_client.rs#L198
warning: variable does not need to be mutable
--> crates/shadowsocks-service/src/local/http/http_client.rs:198:9
|
198 | mut req: Request<B>,
| ----^^^
| |
| help: remove this `mut`
|
= note: `#[warn(unused_mut)]` on by default
|
this `else { if .. }` block can be collapsed:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L147
warning: this `else { if .. }` block can be collapsed
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:147:16
|
147 | } else {
| ________________^
148 | | if use_http_tunnel {
149 | | // todo!("http tunnel is not implemented yet");
150 | | AutoProxyClientStream::connect_http_tunnel(context, server, addr).await
... |
153 | | }
154 | | }
| |_________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_else_if
= note: `#[warn(clippy::collapsible_else_if)]` on by default
help: collapse nested if block
|
147 ~ } else if use_http_tunnel {
148 + // todo!("http tunnel is not implemented yet");
149 + AutoProxyClientStream::connect_http_tunnel(context, server, addr).await
150 + } else {
151 + AutoProxyClientStream::connect_proxied_with_opts(context, server, addr, opts).await
152 + }
|
|
unused import: `rustls::ClientConfig`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L25
warning: unused import: `rustls::ClientConfig`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:25:20
|
25 | use tokio_rustls::{rustls::ClientConfig, TlsConnector};
| ^^^^^^^^^^^^^^^^^^^^
|
unused imports: `AsyncBufReadExt` and `BufReader`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L24
warning: unused imports: `AsyncBufReadExt` and `BufReader`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:24:17
|
24 | use tokio::io::{AsyncBufReadExt, AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt, BufReader, ReadBuf};
| ^^^^^^^^^^^^^^^ ^^^^^^^^^
|
unused import: `Request`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L16
warning: unused import: `Request`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:16:16
|
16 | use httparse::{Request, Response, Status};
| ^^^^^^^
|
unused imports: `FutureExt` and `ready`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L15
warning: unused imports: `FutureExt` and `ready`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:15:20
|
15 | use futures_util::{ready, FutureExt};
| ^^^^^ ^^^^^^^^^
|
unused imports: `Future` and `stream`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L14
warning: unused imports: `Future` and `stream`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:14:15
|
14 | use futures::{stream, Future};
| ^^^^^^ ^^^^^^
|
unused import: `arc_swap::strategy`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L12
warning: unused import: `arc_swap::strategy`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:12:5
|
12 | use arc_swap::strategy;
| ^^^^^^^^^^^^^^^^^^
|
unused import: `self`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L7
warning: unused import: `self`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:7:11
|
7 | pin::{self, Pin},
| ^^^^
|
unused import: `tokio::pin`:
crates/shadowsocks-service/src/local/http/http_service.rs#L16
warning: unused import: `tokio::pin`
--> crates/shadowsocks-service/src/local/http/http_service.rs:16:5
|
16 | use tokio::pin;
| ^^^^^^^^^^
|
unused import: `futures::stream`:
crates/shadowsocks-service/src/local/http/http_service.rs#L6
warning: unused import: `futures::stream`
--> crates/shadowsocks-service/src/local/http/http_service.rs:6:5
|
6 | use futures::stream;
| ^^^^^^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
|
transmute used without annotations:
crates/shadowsocks-service/src/local/tun/tcp.rs#L172
warning: transmute used without annotations
--> crates/shadowsocks-service/src/local/tun/tcp.rs:172:38
|
172 | let recv_buf = unsafe { mem::transmute::<_, &mut [u8]>(buf.unfilled_mut()) };
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider adding missing annotations: `transmute::<&mut [std::mem::MaybeUninit<u8>], &mut [u8]>`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_transmute_annotations
= note: `#[warn(clippy::missing_transmute_annotations)]` on by default
|
unnecessary closure used to substitute value for `Option::None`:
crates/shadowsocks-service/src/local/socks/server/mod.rs#L114
warning: unnecessary closure used to substitute value for `Option::None`
--> crates/shadowsocks-service/src/local/socks/server/mod.rs:114:46
|
114 | let udp_associate_addr: ServerAddr = self
| ______________________________________________^
115 | | .udp_associate_addr
116 | | .as_ref()
117 | | .or_else(|| self.udp_bind_addr.as_ref())
| |______________--------------------------------------^
| |
| help: use `or(..)` instead: `or(self.udp_bind_addr.as_ref())`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations
|
unnecessary closure used to substitute value for `Option::None`:
crates/shadowsocks-service/src/local/socks/server/mod.rs#L114
warning: unnecessary closure used to substitute value for `Option::None`
--> crates/shadowsocks-service/src/local/socks/server/mod.rs:114:46
|
114 | let udp_associate_addr: ServerAddr = self
| ______________________________________________^
115 | | .udp_associate_addr
116 | | .as_ref()
117 | | .or_else(|| self.udp_bind_addr.as_ref())
118 | | .unwrap_or_else(|| &self.client_config)
| |______________-------------------------------------^
| |
| help: use `unwrap_or(..)` instead: `unwrap_or(&self.client_config)`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations
= note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default
|
this `match` can be collapsed into the outer `if let`:
crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/macos.rs#L58
warning: this `match` can be collapsed into the outer `if let`
--> crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/macos.rs:58:21
|
58 | / match errno {
59 | | libc::ENOPROTOOPT => {
60 | | trace!("failed to set SO_REUSEPORT, error: {}", err);
61 | | }
... |
65 | | }
66 | | }
| |_____________________^
|
help: the outer pattern can be modified to include the inner pattern
--> crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/macos.rs:57:29
|
57 | if let Some(errno) = err.raw_os_error() {
| ^^^^^ replace this binding
58 | match errno {
59 | libc::ENOPROTOOPT => {
| ^^^^^^^^^^^^^^^^^ with this pattern
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match
= note: `#[warn(clippy::collapsible_match)]` on by default
|
this expression creates a reference which is immediately dereferenced by the compiler:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L98
warning: this expression creates a reference which is immediately dereferenced by the compiler
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:98:23
|
98 | wait_response(&mut stream).await?;
| ^^^^^^^^^^^ help: change this to: `stream`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
= note: `#[warn(clippy::needless_borrow)]` on by default
|
current MSRV (Minimum Supported Rust Version) is `1.74.0` but this item is stable since `1.80.0`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L50
warning: current MSRV (Minimum Supported Rust Version) is `1.74.0` but this item is stable since `1.80.0`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:50:44
|
50 | static CONNECTOR: LazyLock<TlsConnector> = LazyLock::new(|| {
| ^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv
= note: `#[warn(clippy::incompatible_msrv)]` on by default
|
casting the result of `i32::abs()` to u32:
crates/shadowsocks-service/src/local/loadbalancing/server_stat.rs#L191
warning: casting the result of `i32::abs()` to u32
--> crates/shadowsocks-service/src/local/loadbalancing/server_stat.rs:191:30
|
191 | .map(|s| (*s as i32 - self.data.latency_median as i32).abs() as u32)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `(*s as i32 - self.data.latency_median as i32).unsigned_abs()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_abs_to_unsigned
= note: `#[warn(clippy::cast_abs_to_unsigned)]` on by default
|
using `clone` on type `ServerStatData` which implements the `Copy` trait:
crates/shadowsocks-service/src/local/loadbalancing/server_data.rs#L69
warning: using `clone` on type `ServerStatData` which implements the `Copy` trait
--> crates/shadowsocks-service/src/local/loadbalancing/server_data.rs:69:9
|
69 | self.stat_data.lock().await.data().clone()
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.stat_data.lock().await.data()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
|
using `clone` on type `ServerStatData` which implements the `Copy` trait:
crates/shadowsocks-service/src/local/loadbalancing/server_data.rs#L56
warning: using `clone` on type `ServerStatData` which implements the `Copy` trait
--> crates/shadowsocks-service/src/local/loadbalancing/server_data.rs:56:38
|
56 | (stat.push_score(score), stat.data().clone())
| ^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*stat.data()`
|
= 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
|
redundant pattern matching, consider using `is_ok()`:
crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs#L919
warning: redundant pattern matching, consider using `is_ok()`
--> crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs:919:16
|
919 | if let Ok(..) = response.parse(&buf) {
| -------^^^^^^----------------------- help: try: `if response.parse(&buf).is_ok()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching
|
redundant pattern matching, consider using `is_ok()`:
crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs#L878
warning: redundant pattern matching, consider using `is_ok()`
--> crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs:878:16
|
878 | if let Ok(..) = response.parse(&buf) {
| -------^^^^^^----------------------- help: try: `if response.parse(&buf).is_ok()`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching
= note: `#[warn(clippy::redundant_pattern_matching)]` on by default
|
unused import: `AbstractDevice`:
crates/shadowsocks-service/src/local/tun/mod.rs#L32
warning: unused import: `AbstractDevice`
--> crates/shadowsocks-service/src/local/tun/mod.rs:32:78
|
32 | create_as_async, AsyncDevice, Configuration as TunConfiguration, AbstractDevice, Error as TunError, Layer,
| ^^^^^^^^^^^^^^
|
unused import: `ops::Add`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L6
warning: unused import: `ops::Add`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:6:5
|
6 | ops::Add,
| ^^^^^^^^
|
unused variable: `flow_stat`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L166
warning: unused variable: `flow_stat`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:166:13
|
166 | let flow_stat = context.flow_stat();
| ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flow_stat`
|
= note: `#[warn(unused_variables)]` on by default
|
variable does not need to be mutable:
crates/shadowsocks-service/src/local/http/http_client.rs#L198
warning: variable does not need to be mutable
--> crates/shadowsocks-service/src/local/http/http_client.rs:198:9
|
198 | mut req: Request<B>,
| ----^^^
| |
| help: remove this `mut`
|
= note: `#[warn(unused_mut)]` on by default
|
unused import: `rustls::ClientConfig`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L25
warning: unused import: `rustls::ClientConfig`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:25:20
|
25 | use tokio_rustls::{rustls::ClientConfig, TlsConnector};
| ^^^^^^^^^^^^^^^^^^^^
|
unused imports: `AsyncBufReadExt` and `BufReader`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L24
warning: unused imports: `AsyncBufReadExt` and `BufReader`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:24:17
|
24 | use tokio::io::{AsyncBufReadExt, AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt, BufReader, ReadBuf};
| ^^^^^^^^^^^^^^^ ^^^^^^^^^
|
unused import: `Request`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L16
warning: unused import: `Request`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:16:16
|
16 | use httparse::{Request, Response, Status};
| ^^^^^^^
|
unused imports: `FutureExt` and `ready`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L15
warning: unused imports: `FutureExt` and `ready`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:15:20
|
15 | use futures_util::{ready, FutureExt};
| ^^^^^ ^^^^^^^^^
|
unused imports: `Future` and `stream`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L14
warning: unused imports: `Future` and `stream`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:14:15
|
14 | use futures::{stream, Future};
| ^^^^^^ ^^^^^^
|
unused import: `arc_swap::strategy`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L12
warning: unused import: `arc_swap::strategy`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:12:5
|
12 | use arc_swap::strategy;
| ^^^^^^^^^^^^^^^^^^
|
unused import: `self`:
crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs#L7
warning: unused import: `self`
--> crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs:7:11
|
7 | pin::{self, Pin},
| ^^^^
|
unused import: `tokio::pin`:
crates/shadowsocks-service/src/local/http/http_service.rs#L16
warning: unused import: `tokio::pin`
--> crates/shadowsocks-service/src/local/http/http_service.rs:16:5
|
16 | use tokio::pin;
| ^^^^^^^^^^
|
unused import: `futures::stream`:
crates/shadowsocks-service/src/local/http/http_service.rs#L6
warning: unused import: `futures::stream`
--> crates/shadowsocks-service/src/local/http/http_service.rs:6:5
|
6 | use futures::stream;
| ^^^^^^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
|