use std::io::Write;
use crate::errors::VctrlError;
use crate::types::{Blob, Commit, Tag, Tree};
pub trait Encoder: Send + Sync {
fn encode_blob<W: Write + Send>(&self, blob: &Blob, writer: &mut W) -> Result<(), VctrlError>;
fn encode_tree<W: Write + Send>(&self, tree: &Tree, writer: &mut W) -> Result<(), VctrlError>;
fn encode_commit<W: Write + Send>(
&self,
commit: &Commit,
writer: &mut W,
) -> Result<(), VctrlError>;
fn encode_tag<W: Write + Send>(&self, tag: &Tag, writer: &mut W) -> Result<(), VctrlError>;
}