@@ -149,9 +149,7 @@ impl<T, F: FnOnce(T) + Send + 'static> FnBox<T> for F {
149149pub  enum  TestFn  { 
150150    StaticTestFn ( fn ( ) ) , 
151151    StaticBenchFn ( fn ( & mut  Bencher ) ) , 
152-     StaticMetricFn ( fn ( & mut  MetricMap ) ) , 
153152    DynTestFn ( Box < FnBox < ( ) > > ) , 
154-     DynMetricFn ( Box <for <' a > FnBox < & ' a  mut  MetricMap > >) , 
155153    DynBenchFn ( Box < TDynBenchFn  + ' static > ) , 
156154} 
157155
@@ -160,9 +158,7 @@ impl TestFn {
160158        match  * self  { 
161159            StaticTestFn ( ..)  => PadNone , 
162160            StaticBenchFn ( ..)  => PadOnRight , 
163-             StaticMetricFn ( ..)  => PadOnRight , 
164161            DynTestFn ( ..)  => PadNone , 
165-             DynMetricFn ( ..)  => PadOnRight , 
166162            DynBenchFn ( ..)  => PadOnRight , 
167163        } 
168164    } 
@@ -173,9 +169,7 @@ impl fmt::Debug for TestFn {
173169        f. write_str ( match  * self  { 
174170            StaticTestFn ( ..)  => "StaticTestFn(..)" , 
175171            StaticBenchFn ( ..)  => "StaticBenchFn(..)" , 
176-             StaticMetricFn ( ..)  => "StaticMetricFn(..)" , 
177172            DynTestFn ( ..)  => "DynTestFn(..)" , 
178-             DynMetricFn ( ..)  => "DynMetricFn(..)" , 
179173            DynBenchFn ( ..)  => "DynBenchFn(..)" , 
180174        } ) 
181175    } 
@@ -244,16 +238,6 @@ impl Metric {
244238    } 
245239} 
246240
247- #[ derive( PartialEq ) ]  
248- pub  struct  MetricMap ( BTreeMap < String ,  Metric > ) ; 
249- 
250- impl  Clone  for  MetricMap  { 
251-     fn  clone ( & self )  -> MetricMap  { 
252-         let  MetricMap ( ref  map)  = * self ; 
253-         MetricMap ( map. clone ( ) ) 
254-     } 
255- } 
256- 
257241/// In case we want to add other options as well, just add them in this struct. 
258242#[ derive( Copy ,  Clone ,  Debug ) ]  
259243pub  struct  Options  { 
@@ -526,7 +510,6 @@ pub enum TestResult {
526510    TrFailedMsg ( String ) , 
527511    TrIgnored , 
528512    TrAllowedFail , 
529-     TrMetrics ( MetricMap ) , 
530513    TrBench ( BenchSamples ) , 
531514} 
532515
@@ -603,10 +586,6 @@ impl<T: Write> ConsoleTestState<T> {
603586        self . write_short_result ( "FAILED (allowed)" ,  "a" ,  term:: color:: YELLOW ) 
604587    } 
605588
606-     pub  fn  write_metric ( & mut  self )  -> io:: Result < ( ) >  { 
607-         self . write_pretty ( "metric" ,  term:: color:: CYAN ) 
608-     } 
609- 
610589    pub  fn  write_bench ( & mut  self )  -> io:: Result < ( ) >  { 
611590        self . write_pretty ( "bench" ,  term:: color:: CYAN ) 
612591    } 
@@ -679,10 +658,6 @@ impl<T: Write> ConsoleTestState<T> {
679658            TrFailed  | TrFailedMsg ( _)  => self . write_failed ( ) , 
680659            TrIgnored  => self . write_ignored ( ) , 
681660            TrAllowedFail  => self . write_allowed_fail ( ) , 
682-             TrMetrics ( ref  mm)  => { 
683-                 self . write_metric ( ) ?; 
684-                 self . write_plain ( & format ! ( ": {}\n " ,  mm. fmt_metrics( ) ) ) 
685-             } 
686661            TrBench ( ref  bs)  => { 
687662                self . write_bench ( ) ?; 
688663                self . write_plain ( & format ! ( ": {}\n " ,  fmt_bench_samples( bs) ) ) 
@@ -713,7 +688,6 @@ impl<T: Write> ConsoleTestState<T> {
713688                        TrFailedMsg ( ref msg)  => format!( "failed: {}" ,  msg) , 
714689                        TrIgnored  => "ignored" . to_owned( ) , 
715690                        TrAllowedFail  => "failed (allowed)" . to_owned( ) , 
716-                         TrMetrics ( ref mm)  => mm. fmt_metrics( ) , 
717691                        TrBench ( ref bs)  => fmt_bench_samples( bs) , 
718692                    } , 
719693                    test. name) ) 
@@ -860,7 +834,6 @@ pub fn list_tests_console(opts: &TestOpts, tests: Vec<TestDescAndFn>) -> io::Res
860834
861835    let  mut  ntest = 0 ; 
862836    let  mut  nbench = 0 ; 
863-     let  mut  nmetric = 0 ; 
864837
865838    for  test in  filter_tests ( & opts,  tests)  { 
866839        use  TestFn :: * ; 
@@ -870,7 +843,6 @@ pub fn list_tests_console(opts: &TestOpts, tests: Vec<TestDescAndFn>) -> io::Res
870843        let  fntype = match  testfn { 
871844            StaticTestFn ( ..)  | DynTestFn ( ..)  => {  ntest += 1 ;  "test"  } , 
872845            StaticBenchFn ( ..)  | DynBenchFn ( ..)  => {  nbench += 1 ;  "benchmark"  } , 
873-             StaticMetricFn ( ..)  | DynMetricFn ( ..)  => {  nmetric += 1 ;  "metric"  } , 
874846        } ; 
875847
876848        st. write_plain ( format ! ( "{}: {}\n " ,  name,  fntype) ) ?; 
@@ -885,13 +857,12 @@ pub fn list_tests_console(opts: &TestOpts, tests: Vec<TestDescAndFn>) -> io::Res
885857    } 
886858
887859    if  !opts. quiet  { 
888-         if  ntest != 0  || nbench != 0  || nmetric !=  0   { 
860+         if  ntest != 0  || nbench != 0  { 
889861            st. write_plain ( "\n " ) ?; 
890862        } 
891-         st. write_plain ( format ! ( "{}, {}, {} \n " , 
863+         st. write_plain ( format ! ( "{}, {}\n " , 
892864            plural( ntest,  "test" ) , 
893-             plural( nbench,  "benchmark" ) , 
894-             plural( nmetric,  "metric" ) ) ) ?; 
865+             plural( nbench,  "benchmark" ) ) ) ?; 
895866    } 
896867
897868    Ok ( ( ) ) 
@@ -916,15 +887,6 @@ pub fn run_tests_console(opts: &TestOpts, tests: Vec<TestDescAndFn>) -> io::Resu
916887                    } 
917888                    TrIgnored  => st. ignored  += 1 , 
918889                    TrAllowedFail  => st. allowed_fail  += 1 , 
919-                     TrMetrics ( mm)  => { 
920-                         let  tname = test. name ; 
921-                         let  MetricMap ( mm)  = mm; 
922-                         for  ( k,  v)  in  & mm { 
923-                             st. metrics 
924-                               . insert_metric ( & format ! ( "{}.{}" ,  tname,  k) ,  v. value ,  v. noise ) ; 
925-                         } 
926-                         st. measured  += 1 
927-                     } 
928890                    TrBench ( bs)  => { 
929891                        st. metrics . insert_metric ( test. name . as_slice ( ) , 
930892                                                 bs. ns_iter_summ . median , 
@@ -1079,7 +1041,7 @@ pub fn run_tests<F>(opts: &TestOpts, tests: Vec<TestDescAndFn>, mut callback: F)
10791041
10801042    callback ( TeFiltered ( filtered_descs) ) ?; 
10811043
1082-     let  ( filtered_tests,  filtered_benchs_and_metrics ) :  ( Vec < _ > ,  _ )  =
1044+     let  ( filtered_tests,  filtered_benchs ) :  ( Vec < _ > ,  _ )  =
10831045        filtered_tests. into_iter ( ) . partition ( |e| { 
10841046            match  e. testfn  { 
10851047                StaticTestFn ( _)  | DynTestFn ( _)  => true , 
@@ -1164,8 +1126,7 @@ pub fn run_tests<F>(opts: &TestOpts, tests: Vec<TestDescAndFn>, mut callback: F)
11641126
11651127    if  opts. bench_benchmarks  { 
11661128        // All benchmarks run at the end, in serial. 
1167-         // (this includes metric fns) 
1168-         for  b in  filtered_benchs_and_metrics { 
1129+         for  b in  filtered_benchs { 
11691130            callback ( TeWait ( b. desc . clone ( ) ,  b. testfn . padding ( ) ) ) ?; 
11701131            run_test ( opts,  false ,  b,  tx. clone ( ) ) ; 
11711132            let  ( test,  result,  stdout)  = rx. recv ( ) . unwrap ( ) ; 
@@ -1457,18 +1418,6 @@ pub fn run_test(opts: &TestOpts,
14571418            monitor_ch. send ( ( desc,  TrBench ( bs) ,  Vec :: new ( ) ) ) . unwrap ( ) ; 
14581419            return ; 
14591420        } 
1460-         DynMetricFn ( f)  => { 
1461-             let  mut  mm = MetricMap :: new ( ) ; 
1462-             f. call_box ( & mut  mm) ; 
1463-             monitor_ch. send ( ( desc,  TrMetrics ( mm) ,  Vec :: new ( ) ) ) . unwrap ( ) ; 
1464-             return ; 
1465-         } 
1466-         StaticMetricFn ( f)  => { 
1467-             let  mut  mm = MetricMap :: new ( ) ; 
1468-             f ( & mut  mm) ; 
1469-             monitor_ch. send ( ( desc,  TrMetrics ( mm) ,  Vec :: new ( ) ) ) . unwrap ( ) ; 
1470-             return ; 
1471-         } 
14721421        DynTestFn ( f)  => { 
14731422            let  cb = move  |( ) | { 
14741423                __rust_begin_short_backtrace ( || f. call_box ( ( ) ) ) 
@@ -1510,6 +1459,9 @@ fn calc_result(desc: &TestDesc, task_result: Result<(), Box<Any + Send>>) -> Tes
15101459    } 
15111460} 
15121461
1462+ #[ derive( Clone ,  PartialEq ) ]  
1463+ pub  struct  MetricMap ( BTreeMap < String ,  Metric > ) ; 
1464+ 
15131465impl  MetricMap  { 
15141466    pub  fn  new ( )  -> MetricMap  { 
15151467        MetricMap ( BTreeMap :: new ( ) ) 
@@ -1533,15 +1485,14 @@ impl MetricMap {
15331485            value, 
15341486            noise, 
15351487        } ; 
1536-         let  MetricMap ( ref  mut  map)  = * self ; 
1537-         map. insert ( name. to_owned ( ) ,  m) ; 
1488+         self . 0 . insert ( name. to_owned ( ) ,  m) ; 
15381489    } 
15391490
15401491    pub  fn  fmt_metrics ( & self )  -> String  { 
1541-         let  MetricMap ( ref  mm )  =  * self ; 
1542-         let  v :   Vec < String >  = mm . iter ( ) 
1543-                                 . map ( |( k,  v) | format ! ( "{}: {} (+/- {})" ,  * k,  v. value,  v. noise) ) 
1544-                                 . collect ( ) ; 
1492+         let  v =  self . 0 
1493+                     . iter ( ) 
1494+                    . map ( |( k,  v) | format ! ( "{}: {} (+/- {})" ,  * k,  v. value,  v. noise) ) 
1495+                    . collect :: < Vec < _ > > ( ) ; 
15451496        v. join ( ", " ) 
15461497    } 
15471498} 
0 commit comments