Skip to content

chore(deps): update rust crate arc-swap to v1.9.2 #3113

chore(deps): update rust crate arc-swap to v1.9.2

chore(deps): update rust crate arc-swap to v1.9.2 #3113

Triggered via push June 28, 2026 19:42
Status Success
Total duration 13m 20s
Artifacts

build-msrv.yml

on: push
Matrix: build-msrv-shadowsocks-rust
Matrix: build-msrv-shadowsocks-service
Matrix: build-msrv-shadowsocks
Fit to window
Zoom out
Zoom in

Annotations

90 warnings and 3 notices
build-msrv-shadowsocks (windows-latest)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: ilammy/setup-nasm@v1. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
large size difference between variants: crates/shadowsocks-service/src/server/tcprelay.rs#L43
warning: large size difference between variants --> crates/shadowsocks-service/src/server/tcprelay.rs:43:1 | 43 | / enum RemoteStream { 44 | | Direct(OutboundTcpStream), | | ------------------------- the second-largest variant contains at least 48 bytes 45 | | Proxied(OutboundProxyStream), | | ---------------------------- the largest variant contains at least 1160 bytes 46 | | } | |_^ the entire enum is at least 1160 bytes | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#large_enum_variant = note: `#[warn(clippy::large_enum_variant)]` on by default help: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum | 45 - Proxied(OutboundProxyStream), 45 + Proxied(Box<OutboundProxyStream>), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/fake_dns/udp_server.rs#L80
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/fake_dns/udp_server.rs:80:32 | 80 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 80 - return Err(io::Error::new(io::ErrorKind::Other, err)); 80 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/fake_dns/tcp_server.rs#L151
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/fake_dns/tcp_server.rs:151:28 | 151 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 151 - return Err(io::Error::new(io::ErrorKind::Other, err)); 151 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/fake_dns/tcp_server.rs#L133
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/fake_dns/tcp_server.rs:133:32 | 133 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 133 - return Err(io::Error::new(io::ErrorKind::Other, err)); 133 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L984
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:984:32 | 984 | .map_err(|err| io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 984 - .map_err(|err| io::Error::new(io::ErrorKind::Other, err)), 984 + .map_err(|err| io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L975
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:975:50 | 975 | next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 975 - next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)) 975 + next.await.map_err(|err| io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L971
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:971:50 | 971 | next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 971 - next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)) 971 + next.await.map_err(|err| io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L922
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:922:61 | 922 | Err(..) => next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 922 - Err(..) => next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)), 922 + Err(..) => next.await.map_err(|err| io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L918
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:918:61 | 918 | Err(..) => next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 918 - Err(..) => next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)), 918 + Err(..) => next.await.map_err(|err| io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L886
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:886:36 | 886 | .map_err(|err| io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 886 - .map_err(|err| io::Error::new(io::ErrorKind::Other, err)) 886 + .map_err(|err| io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L879
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:879:36 | 879 | .map_err(|err| io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 879 - .map_err(|err| io::Error::new(io::ErrorKind::Other, err)) 879 + .map_err(|err| io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L488
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:488:36 | 488 | Err(err) => return Err(io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 488 - Err(err) => return Err(io::Error::new(io::ErrorKind::Other, err)), 488 + Err(err) => return Err(io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L338
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:338:40 | 338 | Err(err) => return Err(io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 338 - Err(err) => return Err(io::Error::new(io::ErrorKind::Other, err)), 338 + Err(err) => return Err(io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L332
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:332:32 | 332 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 332 - return Err(io::Error::new(io::ErrorKind::Other, err)); 332 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L324
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:324:32 | 324 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 324 - return Err(io::Error::new(io::ErrorKind::Other, err)); 324 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/dns_resolver.rs#L101
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/dns_resolver.rs:101:32 | 101 | .map_err(|err| io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 101 - .map_err(|err| io::Error::new(io::ErrorKind::Other, err)), 101 + .map_err(|err| io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/dns_resolver.rs#L88
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/dns_resolver.rs:88:40 | 88 | ... last_err = io::Error::new(io::ErrorKind::Other, err); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 88 - last_err = io::Error::new(io::ErrorKind::Other, err); 88 + last_err = io::Error::other(err); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/dns_resolver.rs#L79
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/dns_resolver.rs:79:40 | 79 | ... last_err = io::Error::new(io::ErrorKind::Other, err); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error = note: `#[warn(clippy::io_other_error)]` on by default help: use `std::io::Error::other` | 79 - last_err = io::Error::new(io::ErrorKind::Other, err); 79 + last_err = io::Error::other(err); |
this `if` can be collapsed into the outer `match`: crates/shadowsocks-service/src/config.rs#L1355
warning: this `if` can be collapsed into the outer `match` --> crates/shadowsocks-service/src/config.rs:1355:17 | 1355 | / if !self.mode.enable_tcp() { 1356 | | let err = Error::new(ErrorKind::Invalid, "TCP mode have to be enabled for http", None); 1357 | | return Err(err); 1358 | | } | |_________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#collapsible_match = note: `#[warn(clippy::collapsible_match)]` on by default help: collapse nested if block | 1354 ~ ProtocolType::Http 1355 ~ if !self.mode.enable_tcp() => { 1356 | let err = Error::new(ErrorKind::Invalid, "TCP mode have to be enabled for http", None); 1357 | return Err(err); 1358 ~ } |
this can be `std::io::Error::other(_)`: crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs#L195
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs:195:25 | 195 | Err(io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 195 - Err(io::Error::new(io::ErrorKind::Other, err)) 195 + Err(io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs#L189
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs:189:33 | 189 | ... Err(io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 189 - Err(io::Error::new(io::ErrorKind::Other, err)) 189 + Err(io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs#L164
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs:164:25 | 164 | Err(io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error = note: `#[warn(clippy::io_other_error)]` on by default help: use `std::io::Error::other` | 164 - Err(io::Error::new(io::ErrorKind::Other, err)) 164 + Err(io::Error::other(err)) |
large size difference between variants: crates/shadowsocks-service/src/server/tcprelay.rs#L43
warning: large size difference between variants --> crates/shadowsocks-service/src/server/tcprelay.rs:43:1 | 43 | / enum RemoteStream { 44 | | Direct(OutboundTcpStream), | | ------------------------- the second-largest variant contains at least 64 bytes 45 | | Proxied(OutboundProxyStream), | | ---------------------------- the largest variant contains at least 1160 bytes 46 | | } | |_^ the entire enum is at least 1160 bytes | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#large_enum_variant = note: `#[warn(clippy::large_enum_variant)]` on by default help: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum | 45 - Proxied(OutboundProxyStream), 45 + Proxied(Box<OutboundProxyStream>), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/fake_dns/udp_server.rs#L80
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/fake_dns/udp_server.rs:80:32 | 80 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 80 - return Err(io::Error::new(io::ErrorKind::Other, err)); 80 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/fake_dns/tcp_server.rs#L151
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/fake_dns/tcp_server.rs:151:28 | 151 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 151 - return Err(io::Error::new(io::ErrorKind::Other, err)); 151 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/fake_dns/tcp_server.rs#L133
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/fake_dns/tcp_server.rs:133:32 | 133 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 133 - return Err(io::Error::new(io::ErrorKind::Other, err)); 133 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L984
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:984:32 | 984 | .map_err(|err| io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 984 - .map_err(|err| io::Error::new(io::ErrorKind::Other, err)), 984 + .map_err(|err| io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L975
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:975:50 | 975 | next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 975 - next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)) 975 + next.await.map_err(|err| io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L971
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:971:50 | 971 | next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 971 - next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)) 971 + next.await.map_err(|err| io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L922
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:922:61 | 922 | Err(..) => next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 922 - Err(..) => next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)), 922 + Err(..) => next.await.map_err(|err| io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L918
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:918:61 | 918 | Err(..) => next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 918 - Err(..) => next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)), 918 + Err(..) => next.await.map_err(|err| io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L886
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:886:36 | 886 | .map_err(|err| io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 886 - .map_err(|err| io::Error::new(io::ErrorKind::Other, err)) 886 + .map_err(|err| io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L879
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:879:36 | 879 | .map_err(|err| io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 879 - .map_err(|err| io::Error::new(io::ErrorKind::Other, err)) 879 + .map_err(|err| io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L488
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:488:36 | 488 | Err(err) => return Err(io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 488 - Err(err) => return Err(io::Error::new(io::ErrorKind::Other, err)), 488 + Err(err) => return Err(io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L338
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:338:40 | 338 | Err(err) => return Err(io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 338 - Err(err) => return Err(io::Error::new(io::ErrorKind::Other, err)), 338 + Err(err) => return Err(io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L332
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:332:32 | 332 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 332 - return Err(io::Error::new(io::ErrorKind::Other, err)); 332 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L324
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:324:32 | 324 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 324 - return Err(io::Error::new(io::ErrorKind::Other, err)); 324 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/dns_resolver.rs#L101
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/dns_resolver.rs:101:32 | 101 | .map_err(|err| io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 101 - .map_err(|err| io::Error::new(io::ErrorKind::Other, err)), 101 + .map_err(|err| io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/dns_resolver.rs#L88
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/dns_resolver.rs:88:40 | 88 | ... last_err = io::Error::new(io::ErrorKind::Other, err); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 88 - last_err = io::Error::new(io::ErrorKind::Other, err); 88 + last_err = io::Error::other(err); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/dns_resolver.rs#L79
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/dns_resolver.rs:79:40 | 79 | ... last_err = io::Error::new(io::ErrorKind::Other, err); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error = note: `#[warn(clippy::io_other_error)]` on by default help: use `std::io::Error::other` | 79 - last_err = io::Error::new(io::ErrorKind::Other, err); 79 + last_err = io::Error::other(err); |
this `if` can be collapsed into the outer `match`: crates/shadowsocks-service/src/config.rs#L1355
warning: this `if` can be collapsed into the outer `match` --> crates/shadowsocks-service/src/config.rs:1355:17 | 1355 | / if !self.mode.enable_tcp() { 1356 | | let err = Error::new(ErrorKind::Invalid, "TCP mode have to be enabled for http", None); 1357 | | return Err(err); 1358 | | } | |_________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#collapsible_match = note: `#[warn(clippy::collapsible_match)]` on by default help: collapse nested if block | 1354 ~ ProtocolType::Http 1355 ~ if !self.mode.enable_tcp() => { 1356 | let err = Error::new(ErrorKind::Invalid, "TCP mode have to be enabled for http", None); 1357 | return Err(err); 1358 ~ } |
this can be `std::io::Error::other(_)`: crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs#L195
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs:195:25 | 195 | Err(io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 195 - Err(io::Error::new(io::ErrorKind::Other, err)) 195 + Err(io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs#L189
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs:189:33 | 189 | ... Err(io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 189 - Err(io::Error::new(io::ErrorKind::Other, err)) 189 + Err(io::Error::other(err)) |
build-msrv-shadowsocks-service (windows-latest)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: ilammy/setup-nasm@v1. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build-msrv-shadowsocks-rust (windows-latest)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: ilammy/setup-nasm@v1. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
large size difference between variants: crates/shadowsocks-service/src/server/tcprelay.rs#L43
warning: large size difference between variants --> crates/shadowsocks-service/src/server/tcprelay.rs:43:1 | 43 | / enum RemoteStream { 44 | | Direct(OutboundTcpStream), | | ------------------------- the second-largest variant contains at least 48 bytes 45 | | Proxied(OutboundProxyStream), | | ---------------------------- the largest variant contains at least 1160 bytes 46 | | } | |_^ the entire enum is at least 1160 bytes | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#large_enum_variant = note: `#[warn(clippy::large_enum_variant)]` on by default help: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum | 45 - Proxied(OutboundProxyStream), 45 + Proxied(Box<OutboundProxyStream>), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/fake_dns/udp_server.rs#L80
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/fake_dns/udp_server.rs:80:32 | 80 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 80 - return Err(io::Error::new(io::ErrorKind::Other, err)); 80 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/fake_dns/tcp_server.rs#L151
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/fake_dns/tcp_server.rs:151:28 | 151 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 151 - return Err(io::Error::new(io::ErrorKind::Other, err)); 151 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/fake_dns/tcp_server.rs#L133
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/fake_dns/tcp_server.rs:133:32 | 133 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 133 - return Err(io::Error::new(io::ErrorKind::Other, err)); 133 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L984
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:984:32 | 984 | .map_err(|err| io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 984 - .map_err(|err| io::Error::new(io::ErrorKind::Other, err)), 984 + .map_err(|err| io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L975
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:975:50 | 975 | next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 975 - next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)) 975 + next.await.map_err(|err| io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L971
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:971:50 | 971 | next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 971 - next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)) 971 + next.await.map_err(|err| io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L922
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:922:61 | 922 | Err(..) => next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 922 - Err(..) => next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)), 922 + Err(..) => next.await.map_err(|err| io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L918
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:918:61 | 918 | Err(..) => next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 918 - Err(..) => next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)), 918 + Err(..) => next.await.map_err(|err| io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L886
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:886:36 | 886 | .map_err(|err| io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 886 - .map_err(|err| io::Error::new(io::ErrorKind::Other, err)) 886 + .map_err(|err| io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L879
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:879:36 | 879 | .map_err(|err| io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 879 - .map_err(|err| io::Error::new(io::ErrorKind::Other, err)) 879 + .map_err(|err| io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L488
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:488:36 | 488 | Err(err) => return Err(io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 488 - Err(err) => return Err(io::Error::new(io::ErrorKind::Other, err)), 488 + Err(err) => return Err(io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L338
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:338:40 | 338 | Err(err) => return Err(io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 338 - Err(err) => return Err(io::Error::new(io::ErrorKind::Other, err)), 338 + Err(err) => return Err(io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L332
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:332:32 | 332 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 332 - return Err(io::Error::new(io::ErrorKind::Other, err)); 332 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L324
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:324:32 | 324 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 324 - return Err(io::Error::new(io::ErrorKind::Other, err)); 324 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/dns_resolver.rs#L101
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/dns_resolver.rs:101:32 | 101 | .map_err(|err| io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 101 - .map_err(|err| io::Error::new(io::ErrorKind::Other, err)), 101 + .map_err(|err| io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/dns_resolver.rs#L88
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/dns_resolver.rs:88:40 | 88 | ... last_err = io::Error::new(io::ErrorKind::Other, err); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 88 - last_err = io::Error::new(io::ErrorKind::Other, err); 88 + last_err = io::Error::other(err); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/dns_resolver.rs#L79
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/dns_resolver.rs:79:40 | 79 | ... last_err = io::Error::new(io::ErrorKind::Other, err); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error = note: `#[warn(clippy::io_other_error)]` on by default help: use `std::io::Error::other` | 79 - last_err = io::Error::new(io::ErrorKind::Other, err); 79 + last_err = io::Error::other(err); |
this `if` can be collapsed into the outer `match`: crates/shadowsocks-service/src/config.rs#L1355
warning: this `if` can be collapsed into the outer `match` --> crates/shadowsocks-service/src/config.rs:1355:17 | 1355 | / if !self.mode.enable_tcp() { 1356 | | let err = Error::new(ErrorKind::Invalid, "TCP mode have to be enabled for http", None); 1357 | | return Err(err); 1358 | | } | |_________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#collapsible_match = note: `#[warn(clippy::collapsible_match)]` on by default help: collapse nested if block | 1354 ~ ProtocolType::Http 1355 ~ if !self.mode.enable_tcp() => { 1356 | let err = Error::new(ErrorKind::Invalid, "TCP mode have to be enabled for http", None); 1357 | return Err(err); 1358 ~ } |
this can be `std::io::Error::other(_)`: crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs#L195
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs:195:25 | 195 | Err(io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 195 - Err(io::Error::new(io::ErrorKind::Other, err)) 195 + Err(io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs#L189
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs:189:33 | 189 | ... Err(io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 189 - Err(io::Error::new(io::ErrorKind::Other, err)) 189 + Err(io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs#L164
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs:164:25 | 164 | Err(io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error = note: `#[warn(clippy::io_other_error)]` on by default help: use `std::io::Error::other` | 164 - Err(io::Error::new(io::ErrorKind::Other, err)) 164 + Err(io::Error::other(err)) |
large size difference between variants: crates/shadowsocks-service/src/server/tcprelay.rs#L43
warning: large size difference between variants --> crates/shadowsocks-service/src/server/tcprelay.rs:43:1 | 43 | / enum RemoteStream { 44 | | Direct(OutboundTcpStream), | | ------------------------- the second-largest variant contains at least 64 bytes 45 | | Proxied(OutboundProxyStream), | | ---------------------------- the largest variant contains at least 1160 bytes 46 | | } | |_^ the entire enum is at least 1160 bytes | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#large_enum_variant = note: `#[warn(clippy::large_enum_variant)]` on by default help: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum | 45 - Proxied(OutboundProxyStream), 45 + Proxied(Box<OutboundProxyStream>), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/fake_dns/udp_server.rs#L80
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/fake_dns/udp_server.rs:80:32 | 80 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 80 - return Err(io::Error::new(io::ErrorKind::Other, err)); 80 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/fake_dns/tcp_server.rs#L151
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/fake_dns/tcp_server.rs:151:28 | 151 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 151 - return Err(io::Error::new(io::ErrorKind::Other, err)); 151 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/fake_dns/tcp_server.rs#L133
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/fake_dns/tcp_server.rs:133:32 | 133 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 133 - return Err(io::Error::new(io::ErrorKind::Other, err)); 133 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L984
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:984:32 | 984 | .map_err(|err| io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 984 - .map_err(|err| io::Error::new(io::ErrorKind::Other, err)), 984 + .map_err(|err| io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L975
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:975:50 | 975 | next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 975 - next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)) 975 + next.await.map_err(|err| io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L971
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:971:50 | 971 | next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 971 - next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)) 971 + next.await.map_err(|err| io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L922
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:922:61 | 922 | Err(..) => next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 922 - Err(..) => next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)), 922 + Err(..) => next.await.map_err(|err| io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L918
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:918:61 | 918 | Err(..) => next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 918 - Err(..) => next.await.map_err(|err| io::Error::new(io::ErrorKind::Other, err)), 918 + Err(..) => next.await.map_err(|err| io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L886
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:886:36 | 886 | .map_err(|err| io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 886 - .map_err(|err| io::Error::new(io::ErrorKind::Other, err)) 886 + .map_err(|err| io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L879
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:879:36 | 879 | .map_err(|err| io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 879 - .map_err(|err| io::Error::new(io::ErrorKind::Other, err)) 879 + .map_err(|err| io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L488
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:488:36 | 488 | Err(err) => return Err(io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 488 - Err(err) => return Err(io::Error::new(io::ErrorKind::Other, err)), 488 + Err(err) => return Err(io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L338
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:338:40 | 338 | Err(err) => return Err(io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 338 - Err(err) => return Err(io::Error::new(io::ErrorKind::Other, err)), 338 + Err(err) => return Err(io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L332
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:332:32 | 332 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 332 - return Err(io::Error::new(io::ErrorKind::Other, err)); 332 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/server.rs#L324
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/server.rs:324:32 | 324 | return Err(io::Error::new(io::ErrorKind::Other, err)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 324 - return Err(io::Error::new(io::ErrorKind::Other, err)); 324 + return Err(io::Error::other(err)); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/dns_resolver.rs#L101
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/dns_resolver.rs:101:32 | 101 | .map_err(|err| io::Error::new(io::ErrorKind::Other, err)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 101 - .map_err(|err| io::Error::new(io::ErrorKind::Other, err)), 101 + .map_err(|err| io::Error::other(err)), |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/dns_resolver.rs#L88
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/dns_resolver.rs:88:40 | 88 | ... last_err = io::Error::new(io::ErrorKind::Other, err); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 88 - last_err = io::Error::new(io::ErrorKind::Other, err); 88 + last_err = io::Error::other(err); |
this can be `std::io::Error::other(_)`: crates/shadowsocks-service/src/local/dns/dns_resolver.rs#L79
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks-service/src/local/dns/dns_resolver.rs:79:40 | 79 | ... last_err = io::Error::new(io::ErrorKind::Other, err); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error = note: `#[warn(clippy::io_other_error)]` on by default help: use `std::io::Error::other` | 79 - last_err = io::Error::new(io::ErrorKind::Other, err); 79 + last_err = io::Error::other(err); |
this `if` can be collapsed into the outer `match`: crates/shadowsocks-service/src/config.rs#L1355
warning: this `if` can be collapsed into the outer `match` --> crates/shadowsocks-service/src/config.rs:1355:17 | 1355 | / if !self.mode.enable_tcp() { 1356 | | let err = Error::new(ErrorKind::Invalid, "TCP mode have to be enabled for http", None); 1357 | | return Err(err); 1358 | | } | |_________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#collapsible_match = note: `#[warn(clippy::collapsible_match)]` on by default help: collapse nested if block | 1354 ~ ProtocolType::Http 1355 ~ if !self.mode.enable_tcp() => { 1356 | let err = Error::new(ErrorKind::Invalid, "TCP mode have to be enabled for http", None); 1357 | return Err(err); 1358 ~ } |
this can be `std::io::Error::other(_)`: crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs#L195
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs:195:25 | 195 | Err(io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 195 - Err(io::Error::new(io::ErrorKind::Other, err)) 195 + Err(io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs#L189
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs:189:33 | 189 | ... Err(io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error help: use `std::io::Error::other` | 189 - Err(io::Error::new(io::ErrorKind::Other, err)) 189 + Err(io::Error::other(err)) |
this can be `std::io::Error::other(_)`: crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs#L164
warning: this can be `std::io::Error::other(_)` --> crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs:164:25 | 164 | Err(io::Error::new(io::ErrorKind::Other, err)) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.96.0/index.html#io_other_error = note: `#[warn(clippy::io_other_error)]` on by default help: use `std::io::Error::other` | 164 - Err(io::Error::new(io::ErrorKind::Other, err)) 164 + Err(io::Error::other(err)) |
build-msrv-shadowsocks (macos-latest)
The macos-latest label will migrate to macOS 26 beginning June 15, 2026. For more information see https://github.com/actions/runner-images/issues/14167
build-msrv-shadowsocks-service (macos-latest)
The macos-latest label will migrate to macOS 26 beginning June 15, 2026. For more information see https://github.com/actions/runner-images/issues/14167
build-msrv-shadowsocks-rust (macos-latest)
The macos-latest label will migrate to macOS 26 beginning June 15, 2026. For more information see https://github.com/actions/runner-images/issues/14167