#![forbid(unsafe_code)]
#![deny(missing_docs, rust_2018_idioms)]
use git_hash::{oid, ObjectId};
pub use git_object::bstr;
use git_object::bstr::{BStr, BString};
mod store;
pub use store::{file, packed};
mod fullname;
pub mod name;
pub mod namespace;
pub mod transaction;
mod parse;
mod raw;
pub use raw::Reference;
mod target;
pub mod log;
pub mod peel;
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone)]
pub struct FullName(pub(crate) BString);
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone, Copy)]
pub struct FullNameRef<'a>(&'a BStr);
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone, Copy)]
pub struct PartialNameRef<'a>(&'a BStr);
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone)]
pub struct Namespace(BString);
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone, Copy)]
#[cfg_attr(feature = "serde1", derive(serde::Serialize, serde::Deserialize))]
pub enum Kind {
Peeled,
Symbolic,
}
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone)]
pub enum Target {
Peeled(ObjectId),
Symbolic(FullName),
}
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone, Copy)]
pub enum TargetRef<'a> {
Peeled(&'a oid),
Symbolic(FullNameRef<'a>),
}