LCOV - code coverage report
Current view: top level - libs/utils/src - elapsed_accum.rs (source / functions) Coverage Total Hit
Test: 5e392a02abbad1ab595f4dba672e219a49f7f539.info Lines: 93.8 % 16 15
Test Date: 2025-04-11 22:43:24 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       481436 :     pub fn get(&self) -> Duration {
      10       481436 :         self.accum
      11       481436 :     }
      12           80 :     pub fn guard(&mut self) -> impl Drop + '_ {
      13           80 :         let start = Instant::now();
      14           80 :         scopeguard::guard(start, |last_wait_at| {
      15           80 :             self.accum += Instant::now() - last_wait_at;
      16           80 :         })
      17           80 :     }
      18              : 
      19           32 :     pub async fn measure<Fut, O>(&mut self, fut: Fut) -> O
      20           32 :     where
      21           32 :         Fut: Future<Output = O>,
      22           32 :     {
      23           32 :         let _guard = self.guard();
      24           32 :         fut.await
      25            0 :     }
      26              : }
        

Generated by: LCOV version 2.1-beta