1use crate::*;
2
3use base64::Engine;
4
5pub trait ToMemory {
6 fn to_memory(&self) -> Result<Memory, Error>;
7
8 fn status(&self) -> i32 {
9 0
10 }
11}
12
13impl ToMemory for Memory {
14 fn to_memory(&self) -> Result<Memory, Error> {
15 Ok(Memory(MemoryHandle {
16 offset: self.offset(),
17 length: self.len() as u64,
18 }))
19 }
20}
21
22impl<'a> ToMemory for &'a Memory {
23 fn to_memory(&self) -> Result<Memory, Error> {
24 Ok(Memory(MemoryHandle {
25 offset: self.offset(),
26 length: self.len() as u64,
27 }))
28 }
29}
30
31#[cfg(feature = "http")]
32impl ToMemory for HttpResponse {
33 fn to_memory(&self) -> Result<Memory, Error> {
34 self.as_memory().to_memory()
35 }
36}
37
38impl<'a, T: ToBytes<'a>> ToMemory for T {
39 fn to_memory(&self) -> Result<Memory, Error> {
40 Memory::from_bytes(self.to_bytes()?)
41 }
42}
43
44impl ToMemory for Base64 {
45 fn to_memory(&self) -> Result<Memory, Error> {
46 base64::engine::general_purpose::STANDARD
47 .encode(&self.0)
48 .as_str()
49 .to_memory()
50 }
51}