LCOV - code coverage report
Current view: top level - pageserver/src - assert_u64_eq_usize.rs (source / functions) Coverage Total Hit
Test: a2f0f8a80fbf1089336086fa360ce27fa555cb1a.info Lines: 100.0 % 15 15
Test Date: 2024-11-20 17:59:39 Functions: 100.0 % 3 3

            Line data    Source code
       1              : //! `u64`` and `usize`` aren't guaranteed to be identical in Rust, but life is much simpler if that's the case.
       2              : 
       3              : pub(crate) const _ASSERT_U64_EQ_USIZE: () = {
       4              :     if std::mem::size_of::<usize>() != std::mem::size_of::<u64>() {
       5              :         panic!("the traits defined in this module assume that usize and u64 can be converted to each other without loss of information");
       6              :     }
       7              : };
       8              : 
       9              : pub(crate) trait U64IsUsize {
      10              :     fn into_usize(self) -> usize;
      11              : }
      12              : 
      13              : impl U64IsUsize for u64 {
      14              :     #[inline(always)]
      15      8166836 :     fn into_usize(self) -> usize {
      16      8166836 :         #[allow(clippy::let_unit_value)]
      17      8166836 :         let _ = _ASSERT_U64_EQ_USIZE;
      18      8166836 :         self as usize
      19      8166836 :     }
      20              : }
      21              : 
      22              : pub(crate) trait UsizeIsU64 {
      23              :     fn into_u64(self) -> u64;
      24              : }
      25              : 
      26              : impl UsizeIsU64 for usize {
      27              :     #[inline(always)]
      28     18760164 :     fn into_u64(self) -> u64 {
      29     18760164 :         #[allow(clippy::let_unit_value)]
      30     18760164 :         let _ = _ASSERT_U64_EQ_USIZE;
      31     18760164 :         self as u64
      32     18760164 :     }
      33              : }
      34              : 
      35          210 : pub const fn u64_to_usize(x: u64) -> usize {
      36          210 :     #[allow(clippy::let_unit_value)]
      37          210 :     let _ = _ASSERT_U64_EQ_USIZE;
      38          210 :     x as usize
      39          210 : }
        

Generated by: LCOV version 2.1-beta