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
use std::{
io::{
Read,
Result,
}
};
#[derive(Debug)]
pub struct Memory {
pub buffer: Vec<u8>,
}
impl Read for Memory {
fn read(&mut self, buf: &mut [u8]) -> Result<usize> {
let len = buf.len();
if len == 0 {
Ok(0)
} else if len > self.buffer.len() {
let mut buffer = vec![0; len];
for (i, v) in self.buffer.iter().enumerate() {
buffer[i] = *v;
}
buf.copy_from_slice(&buffer[0..len]);
Ok(len)
} else {
buf.copy_from_slice(&self.buffer[0..len]);
Ok(len)
}
}
}