Struct gix::revision::walk::Platform

source ·
pub struct Platform<'repo> { /* private fields */ }
Expand description

A platform to traverse the revision graph by adding starting points as well as points which shouldn’t be crossed, returned by Repository::rev_walk().

Note that we automatically leverage the commitgraph data structure, but if you know that additional information like author or commit messages will be required of all commits traversed here, it should be better to avoid trying to load it by turning commit-graph support off. This certainly is a micro-optimization though.

Implementations§

source§

impl<'repo> Platform<'repo>

Create-time builder methods

source

pub fn sorting(self, sorting: Sorting) -> Self

Set the sort mode for commits to the given value. The default is to order topologically breadth-first.

source

pub fn first_parent_only(self) -> Self

Only traverse the first parent of the commit graph.

source

pub fn use_commit_graph(self, toggle: impl Into<Option<bool>>) -> Self

Allow using the commitgraph, if present, if toggle is true, or disallow it with false. Set it to None to leave control over this to the configuration of core.commitGraph (the default).

Errors when loading the graph lead to falling back to the object database, it’s treated as optional cache.

source

pub fn with_commit_graph(self, graph: Option<Graph>) -> Self

Set or unset the commit-graph to use for the iteration. This is useful if the caller wants to check if a commit-graph exists and refer different implementations depending on the outcome.

It interacts with use_commit_graph as one would expect, but it’s worth noting that if None, with use_commit_graph being true, a graph will still be used for iteration. To turn the commit-graph off, call use_commit_graph(false) instead.

source§

impl<'repo> Platform<'repo>

Produce the iterator

source

pub fn selected( self, filter: impl FnMut(&oid) -> bool + 'repo ) -> Result<Walk<'repo>, Error>

For each commit, let filter return true if it and its parents should be included in the traversal, or false if the traversal should exclude it and its ancestry entirely.

If filter is None, no pruning of the graph will be performed which is the default.

source

pub fn all(self) -> Result<Walk<'repo>, Error>

Return an iterator to traverse all commits reachable as configured by the Platform.

§Performance

It’s highly recommended to set an object cache on the parent repo to greatly speed up performance if the returned id is supposed to be looked up right after.

Auto Trait Implementations§

§

impl<'repo> Freeze for Platform<'repo>

§

impl<'repo> !RefUnwindSafe for Platform<'repo>

§

impl<'repo> !Send for Platform<'repo>

§

impl<'repo> !Sync for Platform<'repo>

§

impl<'repo> Unpin for Platform<'repo>

§

impl<'repo> !UnwindSafe for Platform<'repo>

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
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.