1#![cfg_attr(
6 all(doc, feature = "document-features"),
7 doc = ::document_features::document_features!()
8)]
9#![cfg_attr(all(doc, feature = "document-features"), feature(doc_cfg))]
10#![deny(missing_docs, rust_2018_idioms, unsafe_code)]
11
12#[cfg(not(feature = "sha1"))]
15compile_error!("Please set the `sha1` feature flag");
16
17#[path = "oid.rs"]
18mod borrowed;
19pub use borrowed::{oid, Error};
20
21pub mod hasher;
23pub use hasher::_impl::{hasher, Hasher};
24
25pub mod io;
27pub use io::_impl::{bytes, bytes_of_file, bytes_with_hasher};
28
29mod object_id;
30pub use object_id::{decode, ObjectId};
31
32pub mod prefix;
34
35pub mod verify;
37
38#[derive(PartialEq, Eq, Hash, Ord, PartialOrd, Clone, Copy, Debug)]
43#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
44pub struct Prefix {
45 bytes: ObjectId,
46 hex_len: usize,
47}
48
49const SIZE_OF_SHA1_DIGEST: usize = 20;
51
52#[derive(Default, PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone, Copy)]
54#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
55#[non_exhaustive]
56pub enum Kind {
57 #[default]
59 Sha1 = 1,
60}
61
62mod kind;