Enum git_odb::pack::data::entry::Header[][src]

pub enum Header {
    Commit,
    Tree,
    Blob,
    Tag,
    RefDelta {
        base_id: ObjectId,
    },
    OfsDelta {
        base_distance: u64,
    },
}

The header portion of a pack data entry, identifying the kind of stored object.

Variants

Commit

The object is a commit

Tree

The object is a tree

Blob

The object is a blob

Tag

The object is a tag

RefDelta

Describes a delta-object which needs to be applied to a base. The base object is identified by the base_id field which is found within the parent repository. Most commonly used for thin-packs when receiving pack files from the server to refer to objects that are not part of the pack but expected to be present in the receivers repository.

Note

This could also be an object within this pack if the LSB encoded offset would be larger than 20 bytes, which is unlikely to happen.

The naming is exactly the same as the canonical implementation uses, namely REF_DELTA.

Show fields

Fields of RefDelta

base_id: ObjectId
OfsDelta

Describes a delta-object present in this pack which acts as base for this object. The base object is measured as a distance from this objects pack offset, so that base_pack_offset = this_objects_pack_offset - base_distance

Note

The naming is exactly the same as the canonical implementation uses, namely OFS_DELTA.

Show fields

Fields of OfsDelta

base_distance: u64

Implementations

impl Header[src]

pub fn verified_base_pack_offset(pack_offset: u64, distance: u64) -> Option<u64>[src]

Subtract distance from pack_offset safely without the chance for overflow or no-ops if distance is 0.

pub fn to_kind(&self) -> Option<Kind>[src]

Convert the header’s object kind into git_object::Kind if possible

pub fn to_type_id(&self) -> u8[src]

Convert this header’s object kind into the packs internal representation

pub fn is_delta(&self) -> bool[src]

Return’s true if this is a delta object, i.e. not a full object.

pub fn is_base(&self) -> bool[src]

Return’s true if this is a base object, i.e. not a delta object.

impl Header[src]

pub fn to_write(
    &self,
    decompressed_size_in_bytes: u64,
    out: impl Write
) -> Result<usize>
[src]

Encode this header along the given decompressed_size_in_bytes into the out write stream for use within a data pack.

Returns the amount of bytes written to out. decompressed_size_in_bytes is the full size in bytes of the object that this header represents

Trait Implementations

impl Clone for Header[src]

impl Copy for Header[src]

impl Debug for Header[src]

impl<'de> Deserialize<'de> for Header[src]

impl Eq for Header[src]

impl Hash for Header[src]

impl Ord for Header[src]

impl PartialEq<Header> for Header[src]

impl PartialOrd<Header> for Header[src]

impl Serialize for Header[src]

impl StructuralEq for Header[src]

impl StructuralPartialEq for Header[src]

Auto Trait Implementations

impl RefUnwindSafe for Header

impl Send for Header

impl Sync for Header

impl Unpin for Header

impl UnwindSafe for Header

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> CallHasher for T where
    T: Hash

impl<T> Conv for T

impl<T> Conv for T

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]

impl<T> FmtForward for T

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Pipe for T where
    T: ?Sized

impl<T> Pipe for T

impl<T> PipeAsRef for T

impl<T> PipeBorrow for T

impl<T> PipeDeref for T

impl<T> PipeRef for T

impl<T> Pointable for T

type Init = T

The type for initializers.

impl<T> Tap for T

impl<T> Tap for T

impl<T, U> TapAsRef<U> for T where
    U: ?Sized

impl<T, U> TapBorrow<U> for T where
    U: ?Sized

impl<T> TapDeref for T

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> TryConv for T

impl<T> TryConv for T

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,