pub struct Forests<T>
where T: Eq + Hash,
{ /* private fields */ }
Expand description

Data structure for building disjoint sets

Implementations§

source§

impl<T> Forests<T>
where T: Eq + Hash,

source

pub fn new() -> Self

source

pub fn count_sets(&mut self) -> usize

Counts the number of unique disjoint sets.

source

pub fn group_items(&mut self, items: &[T]) -> Vec<Vec<usize>>

Groups items by their containing sets. The result is the indices of items in the provided items that belongs to different disjoint sets. The order of groups is arbitrary. Items that do not exist in the forest belongs to the same group that does not consist of other contained items.

source

pub fn make_set(&mut self, item: T)

Makes a new singleton set with exactly one element item.

source

pub fn find_set(&mut self, item: &T) -> Option<Label>

Find the label of the set item belongs to.

source

pub fn union(&mut self, item1: &T, item2: &T)

Unions the two sets containing item1 and item2. No-op if either item1 or item2 is not present (i.e. no make_set has been made).

Trait Implementations§

source§

impl<T> Default for Forests<T>
where T: Eq + Hash,

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<T> Freeze for Forests<T>

§

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

§

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

§

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

§

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

§

impl<T> UnwindSafe for Forests<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>,

§

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.