LCOV - code coverage report
Current view: top level - libs/utils/src - elapsed_accum.rs (source / functions) Coverage Total Hit
Test: aca806cab4756d7eb6a304846130f4a73a5d5393.info Lines: 93.8 % 16 15
Test Date: 2025-04-24 20:31:15 Functions: 71.4 % 7 5

            Line data    Source code
       1              : use std::time::{Duration, Instant};
       2              : 
       3              : #[derive(Default)]
       4              : pub struct ElapsedAccum {
       5              :     accum: Duration,
       6              : }
       7              : 
       8              : impl ElapsedAccum {
       9      1603063 :     pub fn get(&self) -> Duration {
      10      1603063 :         self.accum
      11      1603063 :     }
      12          240 :     pub fn guard(&mut self) -> impl Drop + '_ {
      13          240 :         let start = Instant::now();
      14          240 :         scopeguard::guard(start, |last_wait_at| {
      15          240 :             self.accum += Instant::now() - last_wait_at;
      16          240 :         })
      17          240 :     }
      18              : 
      19           96 :     pub async fn measure<Fut, O>(&mut self, fut: Fut) -> O
      20           96 :     where
      21           96 :         Fut: Future<Output = O>,
      22           96 :     {
      23           96 :         let _guard = self.guard();
      24           96 :         fut.await
      25            0 :     }
      26              : }
        

Generated by: LCOV version 2.1-beta