1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#![no_std]

pub struct Padme;

impl Padme {
    /// Return the padded length
    pub fn padded_len(len: usize) -> usize {
        let e = 63usize.saturating_sub(len.leading_zeros() as usize);
        let s = 64 - e.leading_zeros() as usize;
        let z = e - s;
        let mask = (1usize << z) - 1;
        (len + mask) & !mask
    }

    /// Return the padding length
    #[inline]
    pub fn padding_len(len: usize) -> usize {
        Self::padded_len(len) - len
    }
}