1use std::{convert::Infallible, io};
2
3use crate::{Blob, BlobRef, Kind};
4
5impl<'a> crate::WriteTo for BlobRef<'a> {
6 fn write_to(&self, mut out: impl io::Write) -> io::Result<()> {
8 out.write_all(self.data)
9 }
10
11 fn size(&self) -> usize {
12 self.data.len()
13 }
14
15 fn kind(&self) -> Kind {
16 Kind::Blob
17 }
18}
19
20impl crate::WriteTo for Blob {
21 fn write_to(&self, out: impl io::Write) -> io::Result<()> {
23 self.to_ref().write_to(out)
24 }
25
26 fn size(&self) -> usize {
27 self.to_ref().size()
28 }
29
30 fn kind(&self) -> Kind {
31 Kind::Blob
32 }
33}
34
35impl Blob {
36 pub fn to_ref(&self) -> BlobRef<'_> {
38 BlobRef { data: &self.data }
39 }
40}
41
42impl<'a> BlobRef<'a> {
43 pub fn from_bytes(data: &[u8]) -> Result<BlobRef<'_>, Infallible> {
45 Ok(BlobRef { data })
46 }
47}