gmsm/utils/
slice.rs

1use std::fmt;
2
3pub struct SliceDisplay<'a, T: 'a>(pub &'a [T]);
4
5impl<'a, T: fmt::Display + 'a> fmt::Display for SliceDisplay<'a, T> {
6    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7        let mut first = true;
8        for item in self.0 {
9            if !first {
10                write!(f, ", {}", item)?;
11            } else {
12                write!(f, "{}", item)?;
13            }
14            first = false;
15        }
16        Ok(())
17    }
18}
19
20pub fn copy_slice(dst: &mut [u8], src: &[u8]) -> usize {
21    let mut c = 0;
22    for (d, s) in dst.iter_mut().zip(src.iter()) {
23        *d = *s;
24        c += 1;
25    }
26    c
27}
28
29pub fn copy_slice_i8(dst: &mut [i8], src: &[i8]) -> usize {
30    let mut c = 0;
31    for (d, s) in dst.iter_mut().zip(src.iter()) {
32        *d = *s;
33        c += 1;
34    }
35    c
36}
37
38pub fn concat_u8(first: &[u8], second: &[u8]) -> Vec<u8> {
39    [first, second].concat()
40}