heddle_object_model/compact/
mod.rs1mod blob;
5mod dictionary;
6mod io;
7mod state;
8mod state_decode;
9mod tree;
10
11pub use blob::{decode_blob_frame, encode_blob_frame, is_blob_frame};
12pub use state::{encode_state_frame, is_state_frame};
13pub use state_decode::decode_state_frame;
14use thiserror::Error;
15pub use tree::{decode_tree_frame, encode_tree_frame, encoded_tree_size, is_tree_frame};
16
17#[derive(Debug, Error)]
19pub enum CompactError {
20 #[error("invalid compact frame: {0}")]
22 Invalid(String),
23 #[error(transparent)]
25 Tree(#[from] crate::object::TreeError),
26 #[error("invalid compact git object id: {0}")]
28 GitObjectId(String),
29 #[error("invalid compact spool id: {0}")]
31 SpoolId(String),
32 #[error(transparent)]
34 MessagePackEncode(#[from] rmp_serde::encode::Error),
35 #[error(transparent)]
37 MessagePackDecode(#[from] rmp_serde::decode::Error),
38}
39
40pub(crate) type Result<T> = std::result::Result<T, CompactError>;
41
42pub(crate) fn invalid(message: impl Into<String>) -> CompactError {
43 CompactError::Invalid(message.into())
44}
45
46#[cfg(test)]
47mod tests;