Struct DepMap

Source
pub struct DepMap<T: PartialEq> { /* private fields */ }
Expand description

The dependency map.

Implementations§

Source§

impl<T: PartialEq> DepMap<T>

Source

pub fn new(list: Vec<T>) -> Self

Creates a new DepMap from an initial list.

Source

pub fn process<F, I, E>(initial: Vec<T>, f: F) -> Result<Vec<T>, Error<T, E>>
where F: FnMut(&T) -> I, I: Iterator<Item = Result<T, E>>,

Runs through a whole dependency map using a single producer function.

This is probably what one should use.

Source

pub fn is_empty(&self) -> bool

Whether the map is empty (i.e nothing needs to be worked on).

Source

pub fn destroy(self) -> Result<Vec<T>, Self>

Returns the result list if the dependency map is empty.

If it is not empty, then an error is returned with the whole map.

Source

pub fn add<F, I, E>(&mut self, f: F) -> Result<Option<Vec<&T>>, E>
where F: FnOnce(&T) -> I, I: Iterator<Item = Result<T, E>>,

Adds the latest target’s dependencies at the end, removing those already done and returning cyclic dependency errors (if any).

When cyclic dependency errors occur, the target is retained but its dependencies are not. Skips everything if the depmap is empty.

Auto Trait Implementations§

§

impl<T> Freeze for DepMap<T>

§

impl<T> RefUnwindSafe for DepMap<T>
where T: RefUnwindSafe,

§

impl<T> Send for DepMap<T>
where T: Send,

§

impl<T> Sync for DepMap<T>
where T: Sync,

§

impl<T> Unpin for DepMap<T>
where T: Unpin,

§

impl<T> UnwindSafe for DepMap<T>
where T: 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> 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, 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.