extism_pdk/
to_memory.rs

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}