gix_object/traits/
_impls.rs1use crate::{Kind, WriteTo};
2use gix_hash::ObjectId;
3use std::io::Read;
4use std::ops::Deref;
5use std::rc::Rc;
6use std::sync::Arc;
7
8impl<T> crate::Write for &T
9where
10 T: crate::Write,
11{
12 fn write(&self, object: &dyn WriteTo) -> Result<ObjectId, crate::write::Error> {
13 (*self).write(object)
14 }
15
16 fn write_buf(&self, object: Kind, from: &[u8]) -> Result<ObjectId, crate::write::Error> {
17 (*self).write_buf(object, from)
18 }
19
20 fn write_stream(&self, kind: Kind, size: u64, from: &mut dyn Read) -> Result<ObjectId, crate::write::Error> {
21 (*self).write_stream(kind, size, from)
22 }
23}
24
25impl<T> crate::Write for Arc<T>
26where
27 T: crate::Write,
28{
29 fn write(&self, object: &dyn WriteTo) -> Result<ObjectId, crate::write::Error> {
30 self.deref().write(object)
31 }
32
33 fn write_buf(&self, object: Kind, from: &[u8]) -> Result<ObjectId, crate::write::Error> {
34 self.deref().write_buf(object, from)
35 }
36
37 fn write_stream(&self, kind: Kind, size: u64, from: &mut dyn Read) -> Result<ObjectId, crate::write::Error> {
38 self.deref().write_stream(kind, size, from)
39 }
40}
41
42impl<T> crate::Write for Rc<T>
43where
44 T: crate::Write,
45{
46 fn write(&self, object: &dyn WriteTo) -> Result<ObjectId, crate::write::Error> {
47 self.deref().write(object)
48 }
49
50 fn write_buf(&self, object: Kind, from: &[u8]) -> Result<ObjectId, crate::write::Error> {
51 self.deref().write_buf(object, from)
52 }
53
54 fn write_stream(&self, kind: Kind, size: u64, from: &mut dyn Read) -> Result<ObjectId, crate::write::Error> {
55 self.deref().write_stream(kind, size, from)
56 }
57}
58
59impl<T> WriteTo for &T
60where
61 T: WriteTo,
62{
63 fn write_to(&self, out: &mut dyn std::io::Write) -> std::io::Result<()> {
64 <T as WriteTo>::write_to(self, out)
65 }
66
67 fn kind(&self) -> Kind {
68 <T as WriteTo>::kind(self)
69 }
70
71 fn size(&self) -> u64 {
72 <T as WriteTo>::size(self)
73 }
74}