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}