ContiguousSubgraph

Struct ContiguousSubgraph 

Source
pub struct ContiguousSubgraph<G: SwhGraph, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> { /* private fields */ }
Expand description

A view over SwhGraph and related traits, that filters out some nodes, and renumbers remaining nodes so that the set of valid nodes becomes a range.

Due to limitations in the Rust type system, properties available on the underlying SwhGraph are not automatically available on ContiguousSubgraph. They need to be explicitly enabled in a builder-like pattern on ContiguousSubgraph using these methods:

§Examples

Build a ContiguousSubgraph made of only content and directory nodes:

use dsi_progress_logger::progress_logger;
use swh_graph::properties;
use swh_graph::NodeConstraint;
use swh_graph::graph::SwhGraphWithProperties;
use swh_graph::views::{ContiguousSubgraph, Contraction, Subgraph, ContractionBackend};

fn filesystem_subgraph<G>(graph: &G) -> ContiguousSubgraph<
        Subgraph<&'_ G, impl Fn(usize) -> bool + use<'_, G>, fn(usize, usize) -> bool>,
        impl ContractionBackend,
        properties::NoMaps,
        properties::NoTimestamps,
        properties::NoPersons,
        properties::NoContents,
        properties::NoStrings,
        properties::NoLabelNames,
    >
    where G: SwhGraphWithProperties<Maps: properties::Maps> + Sync {
    let sparse_subgraph = Subgraph::with_node_constraint(graph, "cnt,ori".parse().unwrap());
    ContiguousSubgraph::new_from_noncontiguous_graph(sparse_subgraph)
}

The graph created above is slightly suboptimal, as ContiguousSubgraph wraps a Subgraph, causing Subgraph to add needless overhead by checking that nodes exist, even though ContiguousSubgraph does it too. This should not be noticeable, but if it is an issue, you can skip the Subgraph by manually building a Contraction:

use dsi_progress_logger::progress_logger;
use sux::dict::elias_fano::{EfSeqDict, EliasFanoBuilder};
use swh_graph::properties;
use swh_graph::{NodeType};
use swh_graph::graph::SwhGraphWithProperties;
use swh_graph::views::{ContiguousSubgraph, Contraction, Subgraph, ContractionBackend};

fn filesystem_subgraph<G>(graph: &G) -> ContiguousSubgraph<
        &'_ G,
        EfSeqDict,
        properties::NoMaps,
        properties::NoTimestamps,
        properties::NoPersons,
        properties::NoContents,
        properties::NoStrings,
        properties::NoLabelNames,
    >
    where G: SwhGraphWithProperties<Maps: properties::Maps> {

    // compute exact number of nodes in the subgraph, which is required
    // by EliasFanoBuilder
    let pl = progress_logger!(
        item_name = "node",
        expected_updates = Some(graph.num_nodes()),
    );
    let num_nodes = graph
        .iter_nodes(pl)
        .filter(|&node| match graph.properties().node_type(node) {
            NodeType::Content | NodeType::Directory => true,
            _ => false,
        })
        .count();

    // compute set of nodes in the subgraph
    let mut nodes_efb = EliasFanoBuilder::new(num_nodes, graph.num_nodes());
    for node in 0..graph.num_nodes() {
        match graph.properties().node_type(node) {
            NodeType::Content | NodeType::Directory => nodes_efb.push(node),
            _ => (),
        }
    }
    let contraction = Contraction(nodes_efb.build_with_seq_and_dict());

    // assemble the subgraph
    ContiguousSubgraph::new_from_contraction(graph, contraction)
}

Implementations§

Source§

impl<G: SwhGraphWithProperties<Contents: OptContents>, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, NoContents, STRINGS, LABELNAMES>

Source

pub fn with_contents( self, ) -> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, ContiguousSubgraphContents<G, N>, STRINGS, LABELNAMES>

Makes OptContents available on this ContiguousSubgraph.

Requires the underlying graph to implement OptContents

Source§

impl<G: SwhGraphWithProperties<LabelNames: LabelNames>, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, NoLabelNames>

Source

pub fn with_label_names( self, ) -> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, ContiguousSubgraphLabelNames<G, N>>

Makes properties::LabelNames available on this ContiguousSubgraph.

Requires the underlying graph to implement properties::LabelNames.

Source§

impl<G: SwhGraphWithProperties<Maps: Maps>, N: ContractionBackend, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> ContiguousSubgraph<G, N, NoMaps, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>

Source

pub fn with_maps( self, ) -> ContiguousSubgraph<G, N, ContiguousSubgraphMaps<G, N>, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>

Makes properties::Maps available on this ContiguousSubgraph.

Requires the underlying graph to implement properties::Maps.

Source§

impl<G: SwhGraphWithProperties<Persons: OptPersons>, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, NoPersons, CONTENTS, STRINGS, LABELNAMES>

Source

pub fn with_persons( self, ) -> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, ContiguousSubgraphPersons<G, N>, CONTENTS, STRINGS, LABELNAMES>

Makes OptPersons available on this ContiguousSubgraph.

Requires the underlying graph to implement OptPersons.

Source§

impl<G: SwhGraphWithProperties<Strings: OptStrings>, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, LABELNAMES: MaybeLabelNames> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, NoStrings, LABELNAMES>

Source

pub fn with_strings( self, ) -> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, ContiguousSubgraphStrings<G, N>, LABELNAMES>

Makes OptStrings available on this ContiguousSubgraph.

Requires the underlying graph to implement OptStrings.

Source§

impl<G: SwhGraphWithProperties<Timestamps: OptTimestamps>, N: ContractionBackend, MAPS: MaybeMaps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> ContiguousSubgraph<G, N, MAPS, NoTimestamps, PERSONS, CONTENTS, STRINGS, LABELNAMES>

Source

pub fn with_timestamps( self, ) -> ContiguousSubgraph<G, N, MAPS, ContiguousSubgraphTimestamps<G, N>, PERSONS, CONTENTS, STRINGS, LABELNAMES>

Makes OptTimestamps available on this ContiguousSubgraph.

Requires the underlying graph to implement OptTimestamps.

Source§

impl<G: SwhGraphWithProperties, N: ContractionBackend> ContiguousSubgraph<G, N, NoMaps, NoTimestamps, NoPersons, NoContents, NoStrings, NoLabelNames>

Source

pub fn new_from_contraction(graph: G, contraction: Contraction<N>) -> Self

Creates a new ContiguousSubgraph by keeping only nodes in the Contraction

Source§

impl<G: SwhGraph, N: ContractionBackend> ContiguousSubgraph<G, N, NoMaps, NoTimestamps, NoPersons, NoContents, NoStrings, NoLabelNames>

Source

pub fn underlying_graph(&self) -> &G

Returns the graph this graph is a subgraph of

Use Self::contraction to get the mapping between both sets of node ids

Source

pub fn contraction(&self) -> &Contraction<N>

The structure used to match the underlying graph’s node ids with this graph’s node ids

Source§

impl<G: SwhGraphWithProperties> ContiguousSubgraph<G, EfSeqDict, NoMaps, NoTimestamps, NoPersons, NoContents, NoStrings, NoLabelNames>

Source

pub fn new_from_noncontiguous_graph(graph: G) -> Self
where G: Sync,

Creates a new ContiguousSubgraph from an existing graph with “holes”.

Trait Implementations§

Source§

impl<G: SwhBackwardGraph, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> SwhBackwardGraph for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>

Source§

type Predecessors<'succ> = TranslatedSuccessors<'succ, <<G as SwhBackwardGraph>::Predecessors<'succ> as IntoIterator>::IntoIter, N> where Self: 'succ

Source§

fn predecessors(&self, node_id: NodeId) -> Self::Predecessors<'_>

Return an IntoIterator over the predecessors of a node.
Source§

fn indegree(&self, node_id: NodeId) -> usize

Return the number of predecessors of a node.
Source§

impl<G: SwhForwardGraph, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> SwhForwardGraph for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>

Source§

type Successors<'succ> = TranslatedSuccessors<'succ, <<G as SwhForwardGraph>::Successors<'succ> as IntoIterator>::IntoIter, N> where Self: 'succ

Source§

fn successors(&self, node_id: NodeId) -> Self::Successors<'_>

Return an IntoIterator over the successors of a node.
Source§

fn outdegree(&self, node_id: NodeId) -> usize

Return the number of successors of a node.
Source§

impl<G: SwhGraph, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> SwhGraph for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>

Source§

fn path(&self) -> &Path

Return the base path of the graph
Source§

fn is_transposed(&self) -> bool

Returns whether the graph is in the ori->snp->rel,rev->dir->cnt direction (with a few dir->rev arcs)
Source§

fn num_nodes(&self) -> usize

Return the largest node id in the graph plus one. Read more
Source§

fn has_node(&self, node_id: NodeId) -> bool

Returns whether the given node id exists in the graph Read more
Source§

fn num_arcs(&self) -> u64

Return the number of arcs in the graph.
Source§

fn num_nodes_by_type(&self) -> Result<HashMap<NodeType, usize>>

Returns the number of nodes of each type, if known.
Source§

fn num_arcs_by_type(&self) -> Result<HashMap<(NodeType, NodeType), usize>>

Returns the number of arcs of each type, if known.
Source§

fn has_arc(&self, src_node_id: NodeId, dst_node_id: NodeId) -> bool

Return whether there is an arc going from src_node_id to dst_node_id.
Source§

fn actual_num_nodes(&self) -> Result<usize>

Returns the number of nodes in the graph, if known.
Source§

fn iter_nodes<'a>( &'a self, pl: impl ProgressLog + 'a, ) -> impl Iterator<Item = NodeId> + 'a

Returns an iterator on all the nodes Read more
Source§

fn par_iter_nodes<'a>( &'a self, pl: impl ConcurrentProgressLog + 'a, ) -> impl ParallelIterator<Item = NodeId> + 'a
where Self: Sync,

Returns a parallel iterator on all the nodes Read more
Source§

impl<G: SwhGraphWithProperties, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> SwhGraphWithProperties for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>

Source§

type Maps = MAPS

Source§

type Timestamps = TIMESTAMPS

Source§

type Persons = PERSONS

Source§

type Contents = CONTENTS

Source§

type Strings = STRINGS

Source§

type LabelNames = LABELNAMES

Source§

fn properties( &self, ) -> &SwhGraphProperties<Self::Maps, Self::Timestamps, Self::Persons, Self::Contents, Self::Strings, Self::LabelNames>

Source§

impl<G: SwhLabeledBackwardGraph, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> SwhLabeledBackwardGraph for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>

Source§

type LabeledArcs<'arc> = <G as SwhLabeledBackwardGraph>::LabeledArcs<'arc> where Self: 'arc

Source§

type LabeledPredecessors<'node> = TranslatedLabeledSuccessors<'node, <ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES> as SwhLabeledBackwardGraph>::LabeledArcs<'node>, <<G as SwhLabeledBackwardGraph>::LabeledPredecessors<'node> as IntoIterator>::IntoIter, N> where Self: 'node

Source§

fn untyped_labeled_predecessors( &self, node_id: NodeId, ) -> Self::LabeledPredecessors<'_>

Return an IntoIterator over the predecessors of a node along with a list of labels of each arc
Source§

fn labeled_predecessors( &self, node_id: NodeId, ) -> impl Iterator<Item = (usize, impl Iterator<Item = EdgeLabel>)>

Return an IntoIterator over the predecessors of a node along with a list of labels of each arc
Source§

impl<G: SwhLabeledForwardGraph, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> SwhLabeledForwardGraph for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>

Source§

type LabeledArcs<'arc> = <G as SwhLabeledForwardGraph>::LabeledArcs<'arc> where Self: 'arc

Source§

type LabeledSuccessors<'node> = TranslatedLabeledSuccessors<'node, <ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES> as SwhLabeledForwardGraph>::LabeledArcs<'node>, <<G as SwhLabeledForwardGraph>::LabeledSuccessors<'node> as IntoIterator>::IntoIter, N> where Self: 'node

Source§

fn untyped_labeled_successors( &self, node_id: NodeId, ) -> Self::LabeledSuccessors<'_>

Return an IntoIterator over the successors of a node along with a list of labels of each arc
Source§

fn labeled_successors( &self, node_id: NodeId, ) -> impl Iterator<Item = (usize, impl Iterator<Item = EdgeLabel>)> + IntoFlattenedLabeledArcsIterator<EdgeLabel>

Return an IntoIterator over the successors of a node along with a list of labels of each arc

Auto Trait Implementations§

§

impl<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES> !Freeze for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>

§

impl<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES> RefUnwindSafe for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
where MAPS: RefUnwindSafe, TIMESTAMPS: RefUnwindSafe, PERSONS: RefUnwindSafe, CONTENTS: RefUnwindSafe, STRINGS: RefUnwindSafe, LABELNAMES: RefUnwindSafe, G: RefUnwindSafe, N: RefUnwindSafe,

§

impl<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES> Send for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
where MAPS: Send, TIMESTAMPS: Send, PERSONS: Send, CONTENTS: Send, STRINGS: Send, LABELNAMES: Send, G: Sync + Send, N: Sync + Send,

§

impl<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES> Sync for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
where MAPS: Sync, TIMESTAMPS: Sync, PERSONS: Sync, CONTENTS: Sync, STRINGS: Sync, LABELNAMES: Sync, G: Sync + Send, N: Sync + Send,

§

impl<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES> Unpin for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
where MAPS: Unpin, TIMESTAMPS: Unpin, PERSONS: Unpin, CONTENTS: Unpin, STRINGS: Unpin, LABELNAMES: Unpin,

§

impl<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES> UnwindSafe for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
where MAPS: UnwindSafe, TIMESTAMPS: UnwindSafe, PERSONS: UnwindSafe, CONTENTS: UnwindSafe, STRINGS: UnwindSafe, LABELNAMES: UnwindSafe, G: RefUnwindSafe, N: RefUnwindSafe,

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> 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, U> CastableInto<U> for T
where U: CastableFrom<T>,

Source§

fn cast(self) -> U

Call W::cast_from(self)
Source§

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
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> 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, U> DowncastableInto<U> for T
where U: DowncastableFrom<T>,

Source§

fn downcast(self) -> U

Call W::downcast_from(self)
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
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> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
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> Splat<T> for T

Source§

fn splat(value: T) -> T

Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> To<T> for T

Source§

fn to(self) -> T

Source§

impl<T> To<T> for T

Source§

fn to(self) -> T

Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
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> 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<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

Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,