From fe4dff5df091a7102b1d9a429f155cf4832e53af Mon Sep 17 00:00:00 2001 From: Tunglies Date: Tue, 9 Dec 2025 16:47:57 +0800 Subject: [PATCH] perf: simplify method signatures and reduce clone across multiple files (#1663) --- easytier/src/common/stats_manager.rs | 2 +- .../src/common/tracing_rolling_appender/mod.rs | 2 +- easytier/src/connector/manual.rs | 2 +- easytier/src/connector/udp_hole_punch/common.rs | 1 - easytier/src/connector/udp_hole_punch/mod.rs | 2 +- easytier/src/core.rs | 16 +++++++--------- easytier/src/easytier-cli.rs | 10 +++------- easytier/src/gateway/kcp_proxy.rs | 2 +- easytier/src/gateway/socks5.rs | 1 - easytier/src/gateway/tokio_smoltcp/reactor.rs | 2 +- easytier/src/gateway/tokio_smoltcp/socket.rs | 15 ++++++--------- easytier/src/gateway/udp_proxy.rs | 6 +++--- easytier/src/instance/dns_server/server.rs | 2 +- easytier/src/instance/instance.rs | 6 +++--- easytier/src/instance/virtual_nic.rs | 2 +- easytier/src/launcher.rs | 4 ++-- easytier/src/peers/peer.rs | 2 +- easytier/src/peers/peer_conn.rs | 9 ++++----- easytier/src/peers/peer_conn_ping.rs | 6 +++--- easytier/src/peers/peer_manager.rs | 4 ++-- easytier/src/peers/peer_ospf_route.rs | 2 +- easytier/src/peers/tests.rs | 4 ++-- easytier/src/proto/peer_rpc.rs | 2 +- easytier/src/proto/rpc_impl/client.rs | 4 ++-- easytier/src/rpc_service/instance_manage.rs | 2 +- easytier/src/service_manager/mod.rs | 2 +- easytier/src/tunnel/insecure_tls.rs | 2 +- easytier/src/tunnel/quic.rs | 2 +- easytier/src/tunnel/tcp.rs | 6 +++--- easytier/src/tunnel/udp.rs | 4 ++-- easytier/src/tunnel/websocket.rs | 6 +++--- easytier/src/tunnel/wireguard.rs | 5 +---- easytier/src/vpn_portal/wireguard.rs | 6 +----- 33 files changed, 62 insertions(+), 81 deletions(-) diff --git a/easytier/src/common/stats_manager.rs b/easytier/src/common/stats_manager.rs index 9ce7ab58..8d2ce7e5 100644 --- a/easytier/src/common/stats_manager.rs +++ b/easytier/src/common/stats_manager.rs @@ -509,7 +509,7 @@ impl StatsManager { let counters = Arc::new(DashMap::new()); // Start cleanup task only if we're in a tokio runtime - let counters_clone = Arc::downgrade(&counters.clone()); + let counters_clone = Arc::downgrade(&counters); let cleanup_task = tokio::spawn(async move { let mut interval = interval(Duration::from_secs(60)); // Check every minute loop { diff --git a/easytier/src/common/tracing_rolling_appender/mod.rs b/easytier/src/common/tracing_rolling_appender/mod.rs index bc47c3a5..5520891d 100644 --- a/easytier/src/common/tracing_rolling_appender/mod.rs +++ b/easytier/src/common/tracing_rolling_appender/mod.rs @@ -90,7 +90,7 @@ where /// Rotates old files to make room for a new one. /// This may result in the deletion of the oldest file - fn rotate_files(&mut self) -> io::Result<()> { + fn rotate_files(&self) -> io::Result<()> { // ignore any failure removing the oldest file (may not exist) let _ = fs::remove_file(self.filename_for(self.max_filecount.max(1))); let mut r = Ok(()); diff --git a/easytier/src/connector/manual.rs b/easytier/src/connector/manual.rs index 1aed4875..0cbb9e38 100644 --- a/easytier/src/connector/manual.rs +++ b/easytier/src/connector/manual.rs @@ -249,7 +249,7 @@ impl ManualConnectorManager { create_connector_by_url(&dead_url, &data.global_ctx.clone(), ip_version).await?; data.global_ctx - .issue_event(GlobalCtxEvent::Connecting(connector.remote_url().clone())); + .issue_event(GlobalCtxEvent::Connecting(connector.remote_url())); tracing::info!("reconnect try connect... conn: {:?}", connector); let Some(pm) = data.peer_manager.upgrade() else { return Err(Error::AnyhowError(anyhow::anyhow!( diff --git a/easytier/src/connector/udp_hole_punch/common.rs b/easytier/src/connector/udp_hole_punch/common.rs index c4696413..30b2620b 100644 --- a/easytier/src/connector/udp_hole_punch/common.rs +++ b/easytier/src/connector/udp_hole_punch/common.rs @@ -636,7 +636,6 @@ pub(crate) async fn try_connect_with_socket( remote_mapped_addr.ip(), remote_mapped_addr.port() ) - .to_string() .parse() .unwrap(), ); diff --git a/easytier/src/connector/udp_hole_punch/mod.rs b/easytier/src/connector/udp_hole_punch/mod.rs index 6d3ca9f0..5fcf96d5 100644 --- a/easytier/src/connector/udp_hole_punch/mod.rs +++ b/easytier/src/connector/udp_hole_punch/mod.rs @@ -62,7 +62,7 @@ struct UdpHolePunchServer { impl UdpHolePunchServer { pub fn new(peer_mgr: Arc) -> Arc { - let common = Arc::new(PunchHoleServerCommon::new(peer_mgr.clone())); + let common = Arc::new(PunchHoleServerCommon::new(peer_mgr)); let cone_server = PunchConeHoleServer::new(common.clone()); let sym_to_cone_server = PunchSymToConeHoleServer::new(common.clone()); let both_easy_sym_server = PunchBothEasySymHoleServer::new(common.clone()); diff --git a/easytier/src/core.rs b/easytier/src/core.rs index fd3ab80e..762538d9 100644 --- a/easytier/src/core.rs +++ b/easytier/src/core.rs @@ -715,7 +715,7 @@ impl NetworkOptions { false } - fn merge_into(&self, cfg: &mut TomlConfigLoader) -> anyhow::Result<()> { + fn merge_into(&self, cfg: &TomlConfigLoader) -> anyhow::Result<()> { if self.hostname.is_some() { cfg.set_hostname(self.hostname.clone()); } @@ -1213,7 +1213,7 @@ async fn run_main(cli: Cli) -> anyhow::Result<()> { } }; for config_file in config_files { - let (mut cfg, mut control) = load_config_from_file( + let (cfg, mut control) = load_config_from_file( &config_file, cli.config_dir.as_ref(), cli.disable_env_parsing, @@ -1222,7 +1222,7 @@ async fn run_main(cli: Cli) -> anyhow::Result<()> { if cli.network_options.can_merge(&cfg, config_file_count) { cli.network_options - .merge_into(&mut cfg) + .merge_into(&cfg) .with_context(|| format!("failed to merge config from cli: {:?}", config_file))?; crate_cli_network = false; control.set_read_only(true); @@ -1240,9 +1240,9 @@ async fn run_main(cli: Cli) -> anyhow::Result<()> { } if crate_cli_network { - let mut cfg = TomlConfigLoader::default(); + let cfg = TomlConfigLoader::default(); cli.network_options - .merge_into(&mut cfg) + .merge_into(&cfg) .with_context(|| "failed to create config from cli".to_string())?; println!("Starting easytier from cli with config:"); println!("############### TOML ###############\n"); @@ -1261,11 +1261,9 @@ async fn run_main(cli: Cli) -> anyhow::Result<()> { tokio::select! { _ = manager.wait() => { let infos = manager.collect_network_infos().await?; - let errs = infos + if infos .into_values() - .filter_map(|info| info.error_msg) - .collect::>(); - if !errs.is_empty() { + .filter_map(|info| info.error_msg).next().is_some() { return Err(anyhow::anyhow!("some instances stopped with errors")); } } diff --git a/easytier/src/easytier-cli.rs b/easytier/src/easytier-cli.rs index 937375f8..d6024dbf 100644 --- a/easytier/src/easytier-cli.rs +++ b/easytier/src/easytier-cli.rs @@ -610,17 +610,13 @@ impl CommandHandler<'_> { loss_rate: format!("{:.1}%", p.get_loss_rate().unwrap_or(0.0) * 100.0), rx_bytes: format_size(p.get_rx_bytes().unwrap_or(0), humansize::DECIMAL), tx_bytes: format_size(p.get_tx_bytes().unwrap_or(0), humansize::DECIMAL), - tunnel_proto: p - .get_conn_protos() - .unwrap_or_default() - .join(",") - .to_string(), + tunnel_proto: p.get_conn_protos().unwrap_or_default().join(","), nat_type: p.get_udp_nat_type(), id: route.peer_id.to_string(), version: if route.version.is_empty() { "unknown".to_string() } else { - route.version.to_string() + route.version }, } } @@ -1521,7 +1517,7 @@ async fn main() -> Result<(), Error> { node_info.peer_id, PeerCenterNodeInfo { hostname: node_info.hostname.clone(), - ipv4: node_info.ipv4_addr.clone(), + ipv4: node_info.ipv4_addr, }, ); for route_info in route_infos { diff --git a/easytier/src/gateway/kcp_proxy.rs b/easytier/src/gateway/kcp_proxy.rs index 045e9c28..52598313 100644 --- a/easytier/src/gateway/kcp_proxy.rs +++ b/easytier/src/gateway/kcp_proxy.rs @@ -551,7 +551,7 @@ impl KcpProxyDst { async fn run_accept_task(&mut self) { let kcp_endpoint = self.kcp_endpoint.clone(); - let global_ctx = self.peer_manager.get_global_ctx().clone(); + let global_ctx = self.peer_manager.get_global_ctx(); let proxy_entries = self.proxy_entries.clone(); let cidr_set = self.cidr_set.clone(); let route = Arc::new(self.peer_manager.get_route()); diff --git a/easytier/src/gateway/socks5.rs b/easytier/src/gateway/socks5.rs index 67a98b23..d430894f 100644 --- a/easytier/src/gateway/socks5.rs +++ b/easytier/src/gateway/socks5.rs @@ -296,7 +296,6 @@ impl Socks5ServerNet { cap.medium = smoltcp::phy::Medium::Ip; let (dev, stack_sink, mut stack_stream) = channel_device::ChannelDevice::new(cap); - let packet_recv = packet_recv.clone(); forward_tasks.spawn(async move { let mut smoltcp_stack_receiver = packet_recv.lock().await; while let Some(packet) = smoltcp_stack_receiver.recv().await { diff --git a/easytier/src/gateway/tokio_smoltcp/reactor.rs b/easytier/src/gateway/tokio_smoltcp/reactor.rs index f5ad22e8..b28f5064 100644 --- a/easytier/src/gateway/tokio_smoltcp/reactor.rs +++ b/easytier/src/gateway/tokio_smoltcp/reactor.rs @@ -126,7 +126,7 @@ impl Reactor { ( Reactor { notify, - iface: iface.clone(), + iface, socket_allocator, }, fut, diff --git a/easytier/src/gateway/tokio_smoltcp/socket.rs b/easytier/src/gateway/tokio_smoltcp/socket.rs index 414093b9..1ff64ee6 100644 --- a/easytier/src/gateway/tokio_smoltcp/socket.rs +++ b/easytier/src/gateway/tokio_smoltcp/socket.rs @@ -46,10 +46,7 @@ impl TcpListener { local_addr, }) } - pub fn poll_accept( - &mut self, - cx: &mut Context<'_>, - ) -> Poll> { + pub fn poll_accept(&mut self, cx: &Context<'_>) -> Poll> { let mut socket = self.reactor.get_socket::(*self.handle); if socket.state() == tcp::State::Established { @@ -69,7 +66,7 @@ impl TcpListener { Ok(self.local_addr) } - pub fn relisten(&mut self) { + pub fn relisten(&self) { let mut socket = self.reactor.get_socket::(*self.handle); let local_endpoint = socket.local_endpoint().unwrap(); socket.abort(); @@ -169,7 +166,7 @@ impl TcpStream { Ok(( TcpStream { handle: replace(&mut listener.handle, new_handle), - reactor: reactor.clone(), + reactor, local_addr, peer_addr, }, @@ -183,7 +180,7 @@ impl TcpStream { pub fn peer_addr(&self) -> io::Result { Ok(self.peer_addr) } - pub fn poll_connected(&self, cx: &mut Context<'_>) -> Poll> { + pub fn poll_connected(&self, cx: &Context<'_>) -> Poll> { let mut socket = self.reactor.get_socket::(*self.handle); if socket.state() == tcp::State::Established { return Poll::Ready(Ok(())); @@ -290,7 +287,7 @@ impl UdpSocket { /// Note that on multiple calls to a poll_* method in the send direction, only the Waker from the Context passed to the most recent call will be scheduled to receive a wakeup. pub fn poll_send_to( &self, - cx: &mut Context<'_>, + cx: &Context<'_>, buf: &[u8], target: SocketAddr, ) -> Poll> { @@ -317,7 +314,7 @@ impl UdpSocket { /// Note that on multiple calls to a poll_* method in the recv direction, only the Waker from the Context passed to the most recent call will be scheduled to receive a wakeup. pub fn poll_recv_from( &self, - cx: &mut Context<'_>, + cx: &Context<'_>, buf: &mut [u8], ) -> Poll> { let mut socket = self.reactor.get_socket::(*self.handle); diff --git a/easytier/src/gateway/udp_proxy.rs b/easytier/src/gateway/udp_proxy.rs index 05eeee64..e2d8046b 100644 --- a/easytier/src/gateway/udp_proxy.rs +++ b/easytier/src/gateway/udp_proxy.rs @@ -85,7 +85,7 @@ impl UdpNatEntry { async fn compose_ipv4_packet( self: &Arc, - packet_sender: &mut Sender, + packet_sender: &Sender, buf: &mut [u8], src_v4: &SocketAddrV4, payload_len: usize, @@ -139,7 +139,7 @@ impl UdpNatEntry { async fn forward_task( self: Arc, - mut packet_sender: Sender, + packet_sender: Sender, virtual_ipv4: Ipv4Addr, real_ipv4: Ipv4Addr, mapped_ipv4: Ipv4Addr, @@ -207,7 +207,7 @@ impl UdpNatEntry { let Ok(_) = Self::compose_ipv4_packet( &self_clone, - &mut packet_sender, + &packet_sender, &mut packet, &src_v4, len, diff --git a/easytier/src/instance/dns_server/server.rs b/easytier/src/instance/dns_server/server.rs index 32ae8a59..fc812ff6 100644 --- a/easytier/src/instance/dns_server/server.rs +++ b/easytier/src/instance/dns_server/server.rs @@ -67,7 +67,7 @@ impl RequestHandler for CatalogRequestHandler { pub fn build_authority(domain: &str, records: &[Record]) -> Result { let zone = rr::Name::from_str(domain)?; - let mut authority = InMemoryAuthority::empty(zone.clone(), ZoneType::Primary, false); + let mut authority = InMemoryAuthority::empty(zone, ZoneType::Primary, false); for record in records.iter() { let r = record.try_into()?; authority.upsert_mut(r, 0); diff --git a/easytier/src/instance/instance.rs b/easytier/src/instance/instance.rs index e39a391d..b475c7a4 100644 --- a/easytier/src/instance/instance.rs +++ b/easytier/src/instance/instance.rs @@ -73,7 +73,7 @@ impl IpProxy { let tcp_proxy = TcpProxy::new(peer_manager.clone(), NatDstTcpConnector {}); let icmp_proxy = IcmpProxy::new(global_ctx.clone(), peer_manager.clone()) .with_context(|| "create icmp proxy failed")?; - let udp_proxy = UdpProxy::new(global_ctx.clone(), peer_manager.clone()) + let udp_proxy = UdpProxy::new(global_ctx.clone(), peer_manager) .with_context(|| "create udp proxy failed")?; Ok(IpProxy { tcp_proxy, @@ -551,7 +551,7 @@ impl Instance { let peer_manager = Arc::new(PeerManager::new( RouteAlgoType::Ospf, global_ctx.clone(), - peer_packet_sender.clone(), + peer_packet_sender, )); peer_manager.set_allow_loopback_tunnel(false); @@ -617,7 +617,7 @@ impl Instance { self.conn_manager.clone() } - async fn add_initial_peers(&mut self) -> Result<(), Error> { + async fn add_initial_peers(&self) -> Result<(), Error> { for peer in self.global_ctx.config.get_peers().iter() { self.get_conn_manager() .add_connector_by_url(peer.uri.clone()) diff --git a/easytier/src/instance/virtual_nic.rs b/easytier/src/instance/virtual_nic.rs index c0223c00..525f6912 100644 --- a/easytier/src/instance/virtual_nic.rs +++ b/easytier/src/instance/virtual_nic.rs @@ -366,7 +366,7 @@ impl VirtualNic { Ok(()) } - async fn create_tun(&mut self) -> Result { + async fn create_tun(&self) -> Result { let mut config = Configuration::default(); config.layer(Layer::L3); diff --git a/easytier/src/launcher.rs b/easytier/src/launcher.rs index f791345b..8ae08064 100644 --- a/easytier/src/launcher.rs +++ b/easytier/src/launcher.rs @@ -224,7 +224,7 @@ impl EasyTierLauncher { let notifier = data.instance_stop_notifier.clone(); let ret = rt.block_on(Self::easytier_routine( cfg, - stop_notifier.clone(), + stop_notifier, api_service, data, )); @@ -792,7 +792,7 @@ impl NetworkConfig { let network_identity = config.get_network_identity(); result.network_name = Some(network_identity.network_name.clone()); - result.network_secret = network_identity.network_secret.clone(); + result.network_secret = network_identity.network_secret; if let Some(ipv4) = config.get_ipv4() { result.virtual_ipv4 = Some(ipv4.address().to_string()); diff --git a/easytier/src/peers/peer.rs b/easytier/src/peers/peer.rs index 4a94a594..6733d2d5 100644 --- a/easytier/src/peers/peer.rs +++ b/easytier/src/peers/peer.rs @@ -109,7 +109,7 @@ impl Peer { Peer { peer_node_id, - conns: conns.clone(), + conns, packet_recv_chan, global_ctx, diff --git a/easytier/src/peers/peer_conn.rs b/easytier/src/peers/peer_conn.rs index fe5e7029..98d322d8 100644 --- a/easytier/src/peers/peer_conn.rs +++ b/easytier/src/peers/peer_conn.rs @@ -192,7 +192,7 @@ impl PeerConn { self.is_hole_punched } - async fn wait_handshake(&mut self, need_retry: &mut bool) -> Result { + async fn wait_handshake(&self, need_retry: &mut bool) -> Result { *need_retry = false; let mut locked = self.recv.lock().await; @@ -241,7 +241,7 @@ impl PeerConn { Ok(rsp) } - async fn wait_handshake_loop(&mut self) -> Result { + async fn wait_handshake_loop(&self) -> Result { timeout(Duration::from_secs(5), async move { loop { let mut need_retry = true; @@ -260,7 +260,7 @@ impl PeerConn { .await? } - async fn send_handshake(&mut self, send_secret_digest: bool) -> Result<(), Error> { + async fn send_handshake(&self, send_secret_digest: bool) -> Result<(), Error> { let network = self.global_ctx.get_network_identity(); let mut req = HandshakeRequest { magic: MAGIC, @@ -384,8 +384,7 @@ impl PeerConn { traffic_rx_bytes: stats_mgr.get_counter(MetricName::TrafficBytesRx, label_set.clone()), traffic_tx_packets: stats_mgr .get_counter(MetricName::TrafficPacketsTx, label_set.clone()), - traffic_rx_packets: stats_mgr - .get_counter(MetricName::TrafficPacketsRx, label_set.clone()), + traffic_rx_packets: stats_mgr.get_counter(MetricName::TrafficPacketsRx, label_set), }; self.counters.store(Some(Arc::new(counters))); diff --git a/easytier/src/peers/peer_conn_ping.rs b/easytier/src/peers/peer_conn_ping.rs index 24ffd4cf..2b90fdd7 100644 --- a/easytier/src/peers/peer_conn_ping.rs +++ b/easytier/src/peers/peer_conn_ping.rs @@ -161,7 +161,7 @@ impl PeerConnPinger { async fn do_pingpong_once( my_node_id: PeerId, peer_id: PeerId, - sink: &mut MpscTunnelSender, + sink: &MpscTunnelSender, receiver: &mut broadcast::Receiver, seq: u32, ) -> Result { @@ -258,7 +258,7 @@ impl PeerConnPinger { controller, ); - let mut sink = sink.clone(); + let sink = sink.clone(); let receiver = ctrl_resp_sender.subscribe(); let ping_res_sender = ping_res_sender.clone(); pingpong_tasks.spawn(async move { @@ -266,7 +266,7 @@ impl PeerConnPinger { let pingpong_once_ret = Self::do_pingpong_once( my_node_id, peer_id, - &mut sink, + &sink, &mut receiver, req_seq, ) diff --git a/easytier/src/peers/peer_manager.rs b/easytier/src/peers/peer_manager.rs index 29145f7f..19b1b50b 100644 --- a/easytier/src/peers/peer_manager.rs +++ b/easytier/src/peers/peer_manager.rs @@ -242,7 +242,7 @@ impl PeerManager { )); let foreign_network_client = Arc::new(ForeignNetworkClient::new( global_ctx.clone(), - packet_send.clone(), + packet_send, peer_rpc_mgr.clone(), my_peer_id, )); @@ -289,7 +289,7 @@ impl PeerManager { packet_recv: Arc::new(Mutex::new(Some(packet_recv))), - peers: peers.clone(), + peers, peer_rpc_mgr, peer_rpc_tspt: rpc_tspt, diff --git a/easytier/src/peers/peer_ospf_route.rs b/easytier/src/peers/peer_ospf_route.rs index 7c808f45..e1496a8c 100644 --- a/easytier/src/peers/peer_ospf_route.rs +++ b/easytier/src/peers/peer_ospf_route.rs @@ -2717,7 +2717,7 @@ impl PeerRoute { Arc::new(PeerRoute { my_peer_id, - global_ctx: global_ctx.clone(), + global_ctx, peer_rpc: Arc::downgrade(&peer_rpc), service_impl, diff --git a/easytier/src/peers/tests.rs b/easytier/src/peers/tests.rs index fe2362d2..23098eb0 100644 --- a/easytier/src/peers/tests.rs +++ b/easytier/src/peers/tests.rs @@ -39,11 +39,11 @@ pub async fn create_mock_peer_manager_with_name(network_name: String) -> Arc, server: Arc) { let (a_ring, b_ring) = create_ring_tunnel_pair(); - let a_mgr_copy = client.clone(); + let a_mgr_copy = client; tokio::spawn(async move { a_mgr_copy.add_client_tunnel(a_ring, false).await.unwrap(); }); - let b_mgr_copy = server.clone(); + let b_mgr_copy = server; tokio::spawn(async move { b_mgr_copy.add_tunnel_as_server(b_ring, true).await.unwrap(); }); diff --git a/easytier/src/proto/peer_rpc.rs b/easytier/src/proto/peer_rpc.rs index f3203ec0..f6a5fded 100644 --- a/easytier/src/proto/peer_rpc.rs +++ b/easytier/src/proto/peer_rpc.rs @@ -243,7 +243,7 @@ mod tests { let iterations = 100000; let peer_group_info = - PeerGroupInfo::generate_with_proof(group_name.clone(), group_secret.clone(), peer_id); + PeerGroupInfo::generate_with_proof(group_name, group_secret.clone(), peer_id); let start = std::time::Instant::now(); for _ in 0..iterations { diff --git a/easytier/src/proto/rpc_impl/client.rs b/easytier/src/proto/rpc_impl/client.rs index 2a6af8b0..402efb1c 100644 --- a/easytier/src/proto/rpc_impl/client.rs +++ b/easytier/src/proto/rpc_impl/client.rs @@ -348,7 +348,7 @@ impl Client { return Err(err.into()); } - let raw_output = Bytes::from(rpc_resp.response.clone()); + let raw_output = Bytes::from(rpc_resp.response); ctrl.set_raw_output(raw_output.clone()); // Record RPC client RX and duration stats @@ -372,7 +372,7 @@ impl Client { } F::new(HandlerImpl:: { - domain_name: domain_name.to_string(), + domain_name, from_peer_id, to_peer_id, zc_packet_sender: self.mpsc.lock().unwrap().get_sink(), diff --git a/easytier/src/rpc_service/instance_manage.rs b/easytier/src/rpc_service/instance_manage.rs index 4c4ff240..803c4487 100644 --- a/easytier/src/rpc_service/instance_manage.rs +++ b/easytier/src/rpc_service/instance_manage.rs @@ -206,7 +206,7 @@ impl WebClientService for InstanceManageRpcService { .filter_map(|id| { self.manager .get_instance_config_control(id) - .and_then(|control| control.path.clone()) + .and_then(|control| control.path) }) .collect::>(); let remain_inst_ids = self.manager.delete_network_instance(inst_ids)?; diff --git a/easytier/src/service_manager/mod.rs b/easytier/src/service_manager/mod.rs index 6f35f5ff..785f2c06 100644 --- a/easytier/src/service_manager/mod.rs +++ b/easytier/src/service_manager/mod.rs @@ -100,7 +100,7 @@ impl Service { } self.service_manager - .install(ctx.clone()) + .install(ctx) .map_err(|e| anyhow::anyhow!("failed to install service: {:?}", e))?; println!( diff --git a/easytier/src/tunnel/insecure_tls.rs b/easytier/src/tunnel/insecure_tls.rs index 35f10ae4..a4933ecf 100644 --- a/easytier/src/tunnel/insecure_tls.rs +++ b/easytier/src/tunnel/insecure_tls.rs @@ -80,7 +80,7 @@ pub fn get_insecure_tls_cert<'a>() -> (Vec>, PrivateKeyDer<'a let cert_der = cert.serialize_der().unwrap(); let priv_key = cert.serialize_private_key_der(); let priv_key = rustls::pki_types::PrivatePkcs8KeyDer::from(priv_key); - let cert_chain = vec![cert_der.clone().into()]; + let cert_chain = vec![cert_der.into()]; (cert_chain, priv_key.into()) } diff --git a/easytier/src/tunnel/quic.rs b/easytier/src/tunnel/quic.rs index bddfff10..d3707e75 100644 --- a/easytier/src/tunnel/quic.rs +++ b/easytier/src/tunnel/quic.rs @@ -156,7 +156,7 @@ impl QUICTunnelListener { } } - async fn do_accept(&mut self) -> Result, super::TunnelError> { + async fn do_accept(&self) -> Result, super::TunnelError> { // accept a single connection let conn = self .endpoint diff --git a/easytier/src/tunnel/tcp.rs b/easytier/src/tunnel/tcp.rs index 55226eaa..5e4d069a 100644 --- a/easytier/src/tunnel/tcp.rs +++ b/easytier/src/tunnel/tcp.rs @@ -29,7 +29,7 @@ impl TcpTunnelListener { } } - async fn do_accept(&mut self) -> Result, std::io::Error> { + async fn do_accept(&self) -> Result, std::io::Error> { let listener = self.listener.as_ref().unwrap(); let (stream, _) = listener.accept().await?; @@ -149,7 +149,7 @@ impl TcpTunnelConnector { } async fn connect_with_default_bind( - &mut self, + &self, addr: SocketAddr, ) -> Result, super::TunnelError> { tracing::info!(url = ?self.addr, ?addr, "connect tcp start, bind addrs: {:?}", self.bind_addrs); @@ -159,7 +159,7 @@ impl TcpTunnelConnector { } async fn connect_with_custom_bind( - &mut self, + &self, addr: SocketAddr, ) -> Result, super::TunnelError> { let futures = FuturesUnordered::new(); diff --git a/easytier/src/tunnel/udp.rs b/easytier/src/tunnel/udp.rs index 52b2995a..bb829f03 100644 --- a/easytier/src/tunnel/udp.rs +++ b/easytier/src/tunnel/udp.rs @@ -798,7 +798,7 @@ impl UdpTunnelConnector { } async fn connect_with_default_bind( - &mut self, + &self, addr: SocketAddr, ) -> Result, super::TunnelError> { let socket = if addr.is_ipv4() { @@ -811,7 +811,7 @@ impl UdpTunnelConnector { } async fn connect_with_custom_bind( - &mut self, + &self, addr: SocketAddr, ) -> Result, super::TunnelError> { let futures = FuturesUnordered::new(); diff --git a/easytier/src/tunnel/websocket.rs b/easytier/src/tunnel/websocket.rs index ba292633..bf644210 100644 --- a/easytier/src/tunnel/websocket.rs +++ b/easytier/src/tunnel/websocket.rs @@ -73,7 +73,7 @@ impl WSTunnelListener { } } - async fn try_accept(&mut self, stream: TcpStream) -> Result, TunnelError> { + async fn try_accept(&self, stream: TcpStream) -> Result, TunnelError> { let info = TunnelInfo { tunnel_type: self.addr.scheme().to_owned(), local_addr: Some(self.local_url().into()), @@ -223,7 +223,7 @@ impl WSTunnelConnector { } async fn connect_with_default_bind( - &mut self, + &self, addr: SocketAddr, ) -> Result, super::TunnelError> { let socket = if addr.is_ipv4() { @@ -235,7 +235,7 @@ impl WSTunnelConnector { } async fn connect_with_custom_bind( - &mut self, + &self, addr: SocketAddr, ) -> Result, super::TunnelError> { let futures = FuturesUnordered::new(); diff --git a/easytier/src/tunnel/wireguard.rs b/easytier/src/tunnel/wireguard.rs index dfec589c..411900a6 100644 --- a/easytier/src/tunnel/wireguard.rs +++ b/easytier/src/tunnel/wireguard.rs @@ -690,10 +690,7 @@ impl WgTunnelConnector { Ok(ret) } - async fn connect_with_ipv6( - &mut self, - addr: SocketAddr, - ) -> Result, TunnelError> { + async fn connect_with_ipv6(&self, addr: SocketAddr) -> Result, TunnelError> { let socket2_socket = socket2::Socket::new( socket2::Domain::for_address(addr), socket2::Type::DGRAM, diff --git a/easytier/src/vpn_portal/wireguard.rs b/easytier/src/vpn_portal/wireguard.rs index 584c1ea9..358c1d3a 100644 --- a/easytier/src/vpn_portal/wireguard.rs +++ b/easytier/src/vpn_portal/wireguard.rs @@ -330,11 +330,7 @@ impl VpnPortal for WireGuard { allow_ips.push(client_cidr.to_string()); - let allow_ips = allow_ips - .into_iter() - .map(|x| x.to_string()) - .collect::>() - .join(","); + let allow_ips = allow_ips.into_iter().collect::>().join(","); let cfg = self.inner.as_ref().unwrap().wg_config.clone(); let cfg_str = format!(