Skip to main content

MapReduceBuilder

Struct MapReduceBuilder 

Source
pub struct MapReduceBuilder<G: SwhForwardGraph + SwhBackwardGraph, MR: MapReducer, L: Labels> {
    pub map_reducer: MR,
    /* private fields */
}
Expand description

Builder for MapReduce

Fields§

§map_reducer: MR

Implementations§

Source§

impl<G: SwhForwardGraph + SwhBackwardGraph, MR: MapReducer<Label: Sized>> MapReduceBuilder<G, MR, SparseLabels<MR::Label>>

Source

pub fn new_sparse(graph: G, map_reducer: MR) -> Self

Stores labels in a HashMap. This is the best when labeling the history-hosting layer

This improves memory usage at the expense of runtime and CPU use.

Source§

impl<G: SwhForwardGraph + SwhBackwardGraph, MR: MapReducer<Label: Default + Clone + Sized>> MapReduceBuilder<G, MR, DenseLabels<MR::Label>>

Source

pub fn new_dense(graph: G, map_reducer: MR) -> Self

Stores labels in an array instead of a HashMap. This is the best when labeling the directory layer or the whole graph.

This improves runtime and CPU use at the expense of memory.

This should probably be used only if:

  • labels are small, or
  • computed labels are sparse (wrt. graph.num_nodes()) and None::<MR::Label> is small
Source§

impl<G: SwhForwardGraph + SwhBackwardGraph, MR: MapReducer<Label: StridableLabel>> MapReduceBuilder<G, MR, StriddenLabels<MR::Label>>

Source

pub fn new_stridden(graph: G, map_reducer: MR, num_words: usize) -> Self

Specialized variant of new_labels for non-Sized labels.

All labels must have the same length, but it can be computed at runtime.

Like Self::new_dense, this improves runtime and CPU use at the expense of memory, but less than boxing the values would.

This should only be used if labels are small.

num_words is the length of the [Label::Word] slice needed to store a label.

Source§

impl<G: SwhForwardGraph + SwhBackwardGraph, MR: MapReducer, L: Labels<Label = MR::Label>> MapReduceBuilder<G, MR, L>

Source

pub fn num_nodes(self, num_nodes: usize) -> Self

Source

pub fn cheap_clones(self, cheap_clones: bool) -> Self

Tunes the algorithm to assume labels are cheap to clone.

This is probably true if and only if the labels implement Copy. Setting this to true does not imply they are cheap to move.

Defaults to false.

Source

pub fn keep_labels(self, keep_labels: bool) -> Self

Whether the algorithm should keep labels in its store in order to return them at the end

This is incompatible with cheap_clones(false) (the default).

This consumes extra memory, except when with_labels_array() and labels do not contain heap-allocated data.

Defaults to false.

Source

pub fn build(self) -> Result<MapReduce<G, MR, L>>

Auto Trait Implementations§

§

impl<G, MR, L> Freeze for MapReduceBuilder<G, MR, L>
where G: Freeze, MR: Freeze, <L as Labels>::Config: Freeze,

§

impl<G, MR, L> RefUnwindSafe for MapReduceBuilder<G, MR, L>

§

impl<G, MR, L> Send for MapReduceBuilder<G, MR, L>
where G: Send, MR: Send, <L as Labels>::Config: Send,

§

impl<G, MR, L> Sync for MapReduceBuilder<G, MR, L>
where G: Sync, MR: Sync, <L as Labels>::Config: Sync,

§

impl<G, MR, L> Unpin for MapReduceBuilder<G, MR, L>
where G: Unpin, MR: Unpin, <L as Labels>::Config: Unpin,

§

impl<G, MR, L> UnsafeUnpin for MapReduceBuilder<G, MR, L>

§

impl<G, MR, L> UnwindSafe for MapReduceBuilder<G, MR, L>
where G: UnwindSafe, MR: UnwindSafe, <L as Labels>::Config: UnwindSafe,

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> CastableFrom<T> for T

Source§

fn cast_from(value: T) -> T

Call Self as W
Source§

impl<T, U> CastableInto<U> for T
where U: CastableFrom<T>,

Source§

fn cast(self) -> U

Call W::cast_from(self)
Source§

impl<T> DowncastableFrom<T> for T

Source§

fn downcast_from(value: T) -> T

Truncate the current UnsignedInt to a possibly smaller size
Source§

impl<T, U> DowncastableInto<U> for T
where U: DowncastableFrom<T>,

Source§

fn downcast(self) -> U

Call W::downcast_from(self)
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

Source§

const WITNESS: W = W::MAKE

A constant of the type witness
Source§

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

Source§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
Source§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

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

Source§

type Output = T

Should always be Self
Source§

impl<T> Splat<T> for T

Source§

fn splat(value: T) -> T

Source§

impl<T> To<T> for T

Source§

fn to(self) -> T

Source§

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

Source§

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>,

Source§

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.
Source§

impl<T> UpcastableFrom<T> for T

Source§

fn upcast_from(value: T) -> T

Extend the current UnsignedInt to a possibly bigger size.
Source§

impl<T, U> UpcastableInto<U> for T
where U: UpcastableFrom<T>,

Source§

fn upcast(self) -> U

Call W::upcast_from(self)
Source§

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

Source§

fn vzip(self) -> V