diff --git a/src/output.rs b/src/output.rs index 175ab09..5c036a8 100644 --- a/src/output.rs +++ b/src/output.rs @@ -32,13 +32,13 @@ fn sort_naturally(proxy: &Proxy) -> (ProxyType, Vec, u16) { #[derive(serde::Serialize)] struct ProxyJson<'a> { - protocol: ProxyType, - username: Option, - password: Option, - host: String, + protocol: &'a ProxyType, + username: Option<&'a String>, + password: Option<&'a String>, + host: &'a str, port: u16, timeout: Option, - exit_ip: Option, + exit_ip: Option<&'a String>, asn: Option>, geolocation: Option>, } @@ -89,15 +89,15 @@ pub async fn save_proxies( let mut proxy_dicts = Vec::with_capacity(proxies.len()); for proxy in &proxies { proxy_dicts.push(ProxyJson { - protocol: proxy.protocol.clone(), - username: proxy.username.clone(), - password: proxy.password.clone(), - host: proxy.host.clone(), + protocol: &proxy.protocol, + username: proxy.username.as_ref(), + password: proxy.password.as_ref(), + host: &proxy.host, port: proxy.port, timeout: proxy .timeout .map(|d| (d.as_secs_f64() * 100.0).round() / 100.0_f64), - exit_ip: proxy.exit_ip.clone(), + exit_ip: proxy.exit_ip.as_ref(), asn: if let Some(asn_db) = &maybe_asn_db { if let Some(exit_ip) = proxy.exit_ip.as_ref() { let exit_ip_addr: IpAddr = exit_ip.parse().wrap_err(