singe-cupti 0.1.0-alpha.5

Safe Rust wrappers for NVIDIA CUPTI profiling and callback APIs.
Documentation
use std::mem::size_of;

use crate::error::{Error, Result};

pub(crate) fn to_u64(value: impl TryInto<u64>, name: &str) -> Result<u64> {
    value
        .try_into()
        .map_err(|_| Error::OutOfRange { name: name.into() })
}

pub(crate) fn to_u32(value: impl TryInto<u32>, name: &str) -> Result<u32> {
    value
        .try_into()
        .map_err(|_| Error::OutOfRange { name: name.into() })
}

pub(crate) fn to_usize(value: impl TryInto<usize>, name: &str) -> Result<usize> {
    value
        .try_into()
        .map_err(|_| Error::OutOfRange { name: name.into() })
}

pub(crate) fn checked_byte_len<T>(count: usize, name: &str) -> Result<usize> {
    count
        .checked_mul(size_of::<T>())
        .ok_or(Error::OutOfRange { name: name.into() })
}