@@ -413,29 +413,27 @@ mod tests {
413413 fn build_args_vec ( & self ) -> Vec < String > {
414414 let mut args = vec ! [ "testing" . to_string( ) ] ;
415415
416- let mut push_opt = |flag : & str , value : Option < String > | {
417- if let Some ( v) = value {
418- args. push ( flag. to_string ( ) ) ;
419- args. push ( v) ;
420- }
421- } ;
422-
423- push_opt ( "--node-socket-path" , self . node_socket_path . clone ( ) ) ;
424- push_opt ( "--server-address" , self . server_address . clone ( ) ) ;
425- push_opt ( "--server-port" , self . server_port . map ( |p| p. to_string ( ) ) ) ;
426- push_opt (
427- "--server-concurrency-limit" ,
428- self . server_concurrency_limit . map ( |l| l. to_string ( ) ) ,
429- ) ;
430- push_opt ( "--log-level" , self . log_level . clone ( ) ) ;
431- push_opt ( "--mode" , self . mode . clone ( ) ) ;
432- push_opt ( "--reward-address" , self . reward_address . clone ( ) ) ;
433- push_opt ( "--secret" , self . secret . clone ( ) ) ;
434- push_opt ( "--data-node" , self . data_node . clone ( ) ) ;
435- push_opt (
436- "--data-node-timeout-sec" ,
437- self . data_node_timeout_sec . clone ( ) ,
438- ) ;
416+ macro_rules! push_opt {
417+ ( $flag: expr, $field: expr) => {
418+ // 'ref v' borrows the value inside the Option.
419+ // This works for both String (avoiding move) and usize (Copy).
420+ if let Some ( ref v) = $field {
421+ args. push( $flag. to_string( ) ) ;
422+ args. push( v. to_string( ) ) ;
423+ }
424+ } ;
425+ }
426+
427+ push_opt ! ( "--node-socket-path" , self . node_socket_path) ;
428+ push_opt ! ( "--server-address" , self . server_address) ;
429+ push_opt ! ( "--server-port" , self . server_port) ;
430+ push_opt ! ( "--server-concurrency-limit" , self . server_concurrency_limit) ;
431+ push_opt ! ( "--log-level" , self . log_level) ;
432+ push_opt ! ( "--mode" , self . mode) ;
433+ push_opt ! ( "--reward-address" , self . reward_address) ;
434+ push_opt ! ( "--secret" , self . secret) ;
435+ push_opt ! ( "--data-node" , self . data_node) ;
436+ push_opt ! ( "--data-node-timeout-sec" , self . data_node_timeout_sec) ;
439437
440438 // optional parameters
441439 if self . solitary {
0 commit comments