1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/* ------------------------------------------------------------
    ByteArray
    Project.Github: "https://github.com/kerryeon/bytearray"
---------------------------------------------------------------
    Author:
        Name: "kerryeon"
        Email: "besqer996@gnu.ac.kr"
        Github: "https://github.com/kerryeon"
    Generated:
        Date: "3/10/2019"
------------------------------------------------------------ */

use crate::{
    BinaryBuilder,
    ByteArray,
};

impl BinaryBuilder for Vec<u8> {
    fn new() -> Self {
        vec![]
    }
    fn from_raw(ba: &mut ByteArray) -> Option<Self> {
        // Length
        let len: usize = ba.read_safe()?;
        // Bytes Begin
        let now: usize = ba.now();
        // Bytes End
        ba.seek_next(len)?;
        // Read
        let mut raw = vec![0; len];
        raw.clone_from_slice(&ba.as_vec()[now..now+len]);
        // Return
        Some(raw)
    }
    fn to_raw(&self, mut ba: &mut ByteArray) {
        // Length
        ba <<= &self.len();
        // Write
        ba.as_vec().extend_from_slice(self);
    }
}