row2pgcopy/
blob.rs

1//! Blob structs.
2
3use serde::{Serialize, Serializer};
4
5/// A Blob for PostgreSQL
6pub struct PgBlob {
7    dat: Vec<u8>,
8}
9
10impl Serialize for PgBlob {
11    fn serialize<S>(&self, ser: S) -> Result<S::Ok, S::Error>
12    where
13        S: Serializer,
14    {
15        let s: &[u8] = &self.dat;
16        ser.serialize_bytes(s)
17    }
18}
19
20impl From<Vec<u8>> for PgBlob {
21    fn from(v: Vec<u8>) -> Self {
22        Self { dat: v }
23    }
24}
25
26impl From<&[u8]> for PgBlob {
27    fn from(s: &[u8]) -> Self {
28        Self::from(Vec::from(s))
29    }
30}
31
32impl From<&str> for PgBlob {
33    fn from(s: &str) -> Self {
34        let b: &[u8] = s.as_bytes();
35        Self::from(b)
36    }
37}