Skip to main content

rsa_msg_packets/util/
vec.rs

1use std::{collections::VecDeque, ops::Range};
2
3use anyhow::anyhow;
4
5
6pub fn vec_to_decque<T>(v: Vec<T>) -> VecDeque<T> {
7    let mut r: VecDeque<T> = VecDeque::new();
8    for i in v {
9        r.push_back(i);
10    }
11
12    return r;
13}
14
15pub fn decque_to_vec<T>(v: VecDeque<T>) -> Vec<T> {
16    let mut r: Vec<T> = Vec::new();
17    for i in v {
18        r.push(i);
19    }
20
21    return r;
22}
23
24pub fn extract_vec(range: Range<usize>, v: &mut Vec<u8>) -> anyhow::Result<Vec<u8>> {
25    if range.start > v.len() || range.end > v.len() {
26        return Err(anyhow!(format!("Could not extract vec with range {:?} as vec is {} long", range, v.len())));
27    }
28
29    let splice = v.splice(range, vec![]);
30    let out: Vec<u8> = splice.collect();
31
32    return Ok(out);
33}