Skip to content

chore: tun2 can be compatible with all 3.1.x versions #1233

chore: tun2 can be compatible with all 3.1.x versions

chore: tun2 can be compatible with all 3.1.x versions #1233

Triggered via push September 27, 2024 14:04
Status Success
Total duration 12m 14s
Artifacts 5
Matrix: build-cross
Matrix: build-unix
Fit to window
Zoom out
Zoom in

Annotations

28 warnings
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
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
the following explicit lifetimes could be elided: 'a: crates/shadowsocks/src/relay/udprelay/compat.rs#L204
warning: the following explicit lifetimes could be elided: 'a --> crates/shadowsocks/src/relay/udprelay/compat.rs:204:19 | 204 | fn send_ready<'a>(&'a self) -> SendReadyFut<'a, Self> { | ^^ ^^ ^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes help: elide the lifetimes | 204 - fn send_ready<'a>(&'a self) -> SendReadyFut<'a, Self> { 204 + fn send_ready(&self) -> SendReadyFut<'_, Self> { |
the following explicit lifetimes could be elided: 'a: crates/shadowsocks/src/relay/udprelay/compat.rs#L184
warning: the following explicit lifetimes could be elided: 'a --> crates/shadowsocks/src/relay/udprelay/compat.rs:184:19 | 184 | fn recv_ready<'a>(&'a self) -> RecvReadyFut<'a, Self> { | ^^ ^^ ^^ | = 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 | 184 - fn recv_ready<'a>(&'a self) -> RecvReadyFut<'a, Self> { 184 + fn recv_ready(&self) -> RecvReadyFut<'_, Self> { |
this lifetime isn't used in the function definition: crates/shadowsocks/src/relay/udprelay/compat.rs#L179
warning: this lifetime isn't used in the function definition --> crates/shadowsocks/src/relay/udprelay/compat.rs:179:22 | 179 | fn recv_from<'a, 'b>(&'a self, buf: &'a mut [u8]) -> RecvFromFut<'a, Self> { | ^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes
this lifetime isn't used in the function definition: crates/shadowsocks/src/relay/udprelay/compat.rs#L174
warning: this lifetime isn't used in the function definition --> crates/shadowsocks/src/relay/udprelay/compat.rs:174:17 | 174 | fn recv<'a, 'b>(&'a self, buf: &'a mut [u8]) -> RecvFut<'a, Self> { | ^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes = note: `#[warn(clippy::extra_unused_lifetimes)]` 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/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
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
the following explicit lifetimes could be elided: 'a: crates/shadowsocks/src/relay/udprelay/compat.rs#L204
warning: the following explicit lifetimes could be elided: 'a --> crates/shadowsocks/src/relay/udprelay/compat.rs:204:19 | 204 | fn send_ready<'a>(&'a self) -> SendReadyFut<'a, Self> { | ^^ ^^ ^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes help: elide the lifetimes | 204 - fn send_ready<'a>(&'a self) -> SendReadyFut<'a, Self> { 204 + fn send_ready(&self) -> SendReadyFut<'_, Self> { |
the following explicit lifetimes could be elided: 'a: crates/shadowsocks/src/relay/udprelay/compat.rs#L184
warning: the following explicit lifetimes could be elided: 'a --> crates/shadowsocks/src/relay/udprelay/compat.rs:184:19 | 184 | fn recv_ready<'a>(&'a self) -> RecvReadyFut<'a, Self> { | ^^ ^^ ^^ | = 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 | 184 - fn recv_ready<'a>(&'a self) -> RecvReadyFut<'a, Self> { 184 + fn recv_ready(&self) -> RecvReadyFut<'_, Self> { |
this lifetime isn't used in the function definition: crates/shadowsocks/src/relay/udprelay/compat.rs#L179
warning: this lifetime isn't used in the function definition --> crates/shadowsocks/src/relay/udprelay/compat.rs:179:22 | 179 | fn recv_from<'a, 'b>(&'a self, buf: &'a mut [u8]) -> RecvFromFut<'a, Self> { | ^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes
this lifetime isn't used in the function definition: crates/shadowsocks/src/relay/udprelay/compat.rs#L174
warning: this lifetime isn't used in the function definition --> crates/shadowsocks/src/relay/udprelay/compat.rs:174:17 | 174 | fn recv<'a, 'b>(&'a self, buf: &'a mut [u8]) -> RecvFut<'a, Self> { | ^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default
build-unix (macos-latest, x86_64-apple-darwin)
gnu-tar 1.35 is already installed and up-to-date. To reinstall 1.35, run: brew reinstall gnu-tar
build-unix (macos-latest, aarch64-apple-darwin)
gnu-tar 1.35 is already installed and up-to-date. To reinstall 1.35, run: brew reinstall gnu-tar

Artifacts

Produced during runtime
Name Size
aarch64-apple-darwin
7.58 MB
aarch64-unknown-linux-musl
9.2 MB
windows-native
21.9 MB
x86_64-apple-darwin
10.3 MB
x86_64-unknown-linux-musl
11.8 MB