@@ -63,8 +63,7 @@ use talpid_types::net::{proxy::CustomProxy, IpVersion, TunnelType};
63
63
/// use mullvad_relay_selector::query::builder::RelayQueryBuilder;
64
64
/// use mullvad_relay_selector::query::builder::{Ownership, GeographicLocationConstraint};
65
65
///
66
- /// let query: RelayQuery = RelayQueryBuilder::new()
67
- /// .wireguard() // Specify the tunnel protocol
66
+ /// let query: RelayQuery = RelayQueryBuilder::wireguard() // Specify the tunnel protocol
68
67
/// .location(GeographicLocationConstraint::country("no")) // Specify the country as Norway
69
68
/// .ownership(Ownership::MullvadOwned) // Specify that the relay must be owned by Mullvad
70
69
/// .port(443) // Specify the port to use when connecting to the relay
@@ -570,52 +569,44 @@ pub mod builder {
570
569
}
571
570
572
571
impl RelayQueryBuilder < Any > {
573
- /// Create a new [`RelayQueryBuilder`] with unopinionated defaults .
572
+ /// Create a new [`RelayQueryBuilder`] for Wireguard .
574
573
///
575
574
/// Call [`Self::build`] to convert the builder into a [`RelayQuery`],
576
575
/// which is used to guide the [`RelaySelector`]
577
576
///
578
577
/// [`RelaySelector`]: crate::RelaySelector
579
- pub fn new ( ) -> RelayQueryBuilder < Any > {
580
- RelayQueryBuilder {
581
- query : RelayQuery :: default ( ) ,
582
- protocol : Any ,
583
- }
584
- }
585
- /// Set the VPN protocol for this [`RelayQueryBuilder`] to Wireguard.
586
- pub fn wireguard ( mut self ) -> RelayQueryBuilder < Wireguard < Any , Any , Any , Any > > {
578
+ pub fn wireguard ( ) -> RelayQueryBuilder < Wireguard < Any , Any , Any , Any > > {
587
579
let protocol = Wireguard {
588
580
multihop : Any ,
589
581
obfuscation : Any ,
590
582
daita : Any ,
591
583
quantum_resistant : Any ,
592
584
} ;
593
- self . query . tunnel_protocol = TunnelType :: Wireguard ;
585
+ let query = RelayQuery {
586
+ tunnel_protocol : TunnelType :: Wireguard ,
587
+ ..Default :: default ( )
588
+ } ;
594
589
// Update the type state
595
- RelayQueryBuilder {
596
- query : self . query ,
597
- protocol,
598
- }
590
+ RelayQueryBuilder { query, protocol }
599
591
}
600
592
601
- /// Set the VPN protocol for this [`RelayQueryBuilder`] to OpenVPN.
602
- pub fn openvpn ( mut self ) -> RelayQueryBuilder < OpenVPN < Any , Any > > {
593
+ /// Create a new [`RelayQueryBuilder`] for OpenVPN.
594
+ ///
595
+ /// Call [`Self::build`] to convert the builder into a [`RelayQuery`],
596
+ /// which is used to guide the [`RelaySelector`]
597
+ ///
598
+ /// [`RelaySelector`]: crate::RelaySelector
599
+ pub fn openvpn ( ) -> RelayQueryBuilder < OpenVPN < Any , Any > > {
603
600
let protocol = OpenVPN {
604
601
transport_port : Any ,
605
602
bridge_settings : Any ,
606
603
} ;
607
- self . query . tunnel_protocol = TunnelType :: OpenVpn ;
604
+ let query = RelayQuery {
605
+ tunnel_protocol : TunnelType :: OpenVpn ,
606
+ ..Default :: default ( )
607
+ } ;
608
608
// Update the type state
609
- RelayQueryBuilder {
610
- query : self . query ,
611
- protocol,
612
- }
613
- }
614
- }
615
-
616
- impl Default for RelayQueryBuilder < Any > {
617
- fn default ( ) -> Self {
618
- Self :: new ( )
609
+ RelayQueryBuilder { query, protocol }
619
610
}
620
611
}
621
612
@@ -1061,7 +1052,7 @@ mod test {
1061
1052
/// DAITA is a core privacy feature.
1062
1053
#[ test]
1063
1054
fn test_relay_query_daita_openvpn ( ) {
1064
- let mut query = RelayQueryBuilder :: new ( ) . wireguard ( ) . daita ( ) . build ( ) ;
1055
+ let mut query = RelayQueryBuilder :: wireguard ( ) . daita ( ) . build ( ) ;
1065
1056
query
1066
1057
. set_tunnel_protocol ( TunnelType :: OpenVpn )
1067
1058
. expect_err ( "expected query to be invalid for OpenVPN" ) ;
@@ -1071,7 +1062,7 @@ mod test {
1071
1062
/// Multihop is a core privacy feature.
1072
1063
#[ test]
1073
1064
fn test_relay_query_multihop_openvpn ( ) {
1074
- let mut query = RelayQueryBuilder :: new ( ) . wireguard ( ) . multihop ( ) . build ( ) ;
1065
+ let mut query = RelayQueryBuilder :: wireguard ( ) . multihop ( ) . build ( ) ;
1075
1066
query
1076
1067
. set_tunnel_protocol ( TunnelType :: OpenVpn )
1077
1068
. expect_err ( "expected query to be invalid for OpenVPN" ) ;
@@ -1081,10 +1072,7 @@ mod test {
1081
1072
/// PQ is a core privacy feature.
1082
1073
#[ test]
1083
1074
fn test_relay_query_quantum_resistant_openvpn ( ) {
1084
- let mut query = RelayQueryBuilder :: new ( )
1085
- . wireguard ( )
1086
- . quantum_resistant ( )
1087
- . build ( ) ;
1075
+ let mut query = RelayQueryBuilder :: wireguard ( ) . quantum_resistant ( ) . build ( ) ;
1088
1076
query
1089
1077
. set_tunnel_protocol ( TunnelType :: OpenVpn )
1090
1078
. expect_err ( "expected query to be invalid for OpenVPN" ) ;
0 commit comments