Skip to main content

HeterogeneousAdjacency

Struct HeterogeneousAdjacency 

Source
pub struct HeterogeneousAdjacency {
    pub by_relation: Vec<Vec<(usize, usize)>>,
    pub by_node_type: HashMap<(usize, usize), Vec<usize>>,
    pub n_relations: usize,
    pub n_node_types: usize,
}
Expand description

Compact adjacency representation for heterogeneous graphs.

Stores edges both:

  • Per relation type: by_relation[r] = list of (src, dst) edges with relation type r.
  • Per (src_node_type, dst_node_type) pair: by_node_type[(ts, tt)] = list of all node indices src that have at least one edge to a node of type tt.

Fields§

§by_relation: Vec<Vec<(usize, usize)>>

Adjacency list per relation type: by_relation[r] = Vec<(src, dst)>.

§by_node_type: HashMap<(usize, usize), Vec<usize>>

Nodes per (src_type, dst_type) pair.

by_node_type[(src_type, dst_type)] contains the source node indices for edges going from a node of src_type to a node of dst_type.

§n_relations: usize

Number of relation types

§n_node_types: usize

Number of node types

Implementations§

Source§

impl HeterogeneousAdjacency

Source

pub fn from_typed_edges( n_relations: usize, n_node_types: usize, node_types: &[usize], typed_edges: &[(usize, usize, usize)], ) -> Self

Construct a HeterogeneousAdjacency from a list of typed edges.

§Arguments
  • n_relations – Total number of distinct relation types.
  • n_node_types – Total number of distinct node types.
  • node_types – Node type assignment for every node (len = n_nodes).
  • typed_edges – List of (src, rel_type, dst) directed edges.
Source

pub fn edges_for_relation(&self, r: usize) -> &[(usize, usize)]

Return an iterator over all (src, dst) pairs for relation r.

Source

pub fn sources_by_type(&self, src_type: usize, dst_type: usize) -> &[usize]

Return all source node indices going to nodes of type dst_type from nodes of type src_type.

Source

pub fn n_edges(&self) -> usize

Total number of edges in the graph.

Trait Implementations§

Source§

impl Clone for HeterogeneousAdjacency

Source§

fn clone(&self) -> HeterogeneousAdjacency

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for HeterogeneousAdjacency

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V