Struct CompositeIndex

Source
pub struct CompositeIndex(/* private fields */);
Expand description

CompositeIndex provides an index of both commit IDs and change IDs.

We refer to this as a composite index because it’s a composite of multiple nested index segments where each parent segment is roughly twice as large its child. segment. This provides a good balance between read and write performance.

Implementations§

Source§

impl CompositeIndex

Source

pub fn num_commits(&self) -> u32

Source

pub fn stats(&self) -> IndexStats

Source

pub fn entry_by_pos(&self, pos: IndexPosition) -> IndexEntry<'_>

Source

pub fn entry_by_id(&self, commit_id: &CommitId) -> Option<IndexEntry<'_>>

Source

pub fn commit_id_to_pos(&self, commit_id: &CommitId) -> Option<IndexPosition>

Source

pub fn heads_pos( &self, candidate_positions: Vec<IndexPosition>, ) -> Vec<IndexPosition>

Returns the subset of positions in candidate_positions which refer to entries that are heads in the repository.

The candidate_positions must be sorted in descending order, and have no duplicates. The returned head positions are also sorted in descending order.

Trait Implementations§

Source§

impl AsCompositeIndex for CompositeIndex

Source§

fn as_composite(&self) -> &CompositeIndex

Returns reference wrapper that provides global access to this index.
Source§

impl Index for &CompositeIndex

Source§

fn shortest_unique_commit_id_prefix_len(&self, commit_id: &CommitId) -> usize

Suppose the given commit_id exists, returns the minimum prefix length to disambiguate it. The length to be returned is a number of hexadecimal digits.

If the given commit_id doesn’t exist, this will return the prefix length that never matches with any commit ids.

Source§

fn resolve_commit_id_prefix( &self, prefix: &HexPrefix, ) -> PrefixResolution<CommitId>

Searches the index for commit IDs matching prefix. Returns a PrefixResolution with a CommitId if the prefix matches a single commit.
Source§

fn has_id(&self, commit_id: &CommitId) -> bool

Returns true if commit_id is present in the index.
Source§

fn is_ancestor(&self, ancestor_id: &CommitId, descendant_id: &CommitId) -> bool

Returns true if ancestor_id commit is an ancestor of the descendant_id commit, or if ancestor_id equals descendant_id.
Source§

fn common_ancestors( &self, set1: &[CommitId], set2: &[CommitId], ) -> Vec<CommitId>

Returns the best common ancestor or ancestors of the commits in set1 and set2. A “best common ancestor” has no descendants that are also common ancestors.
Source§

fn all_heads_for_gc( &self, ) -> Result<Box<dyn Iterator<Item = CommitId> + '_>, AllHeadsForGcUnsupported>

Heads among all indexed commits at the associated operation. Read more
Source§

fn heads( &self, candidate_ids: &mut dyn Iterator<Item = &CommitId>, ) -> Result<Vec<CommitId>, IndexError>

Returns the subset of commit IDs in candidates which are not ancestors of other commits in candidates. If a commit id is duplicated in the candidates list it will appear at most once in the output.
Source§

fn evaluate_revset<'index>( &'index self, expression: &ResolvedExpression, store: &Arc<Store>, ) -> Result<Box<dyn Revset + 'index>, RevsetEvaluationError>

Resolves the revset expression against the index and corresponding store.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more