pub trait MessagePassingLayer {
// Required methods
fn aggregate(
&self,
node_features: &[Vec<f64>],
adjacency: &[(usize, usize, f64)],
n_nodes: usize,
) -> Result<Vec<Vec<f64>>>;
fn update(
&self,
aggregated: &[Vec<f64>],
node_features: &[Vec<f64>],
) -> Result<Vec<Vec<f64>>>;
// Provided method
fn forward(
&self,
node_features: &[Vec<f64>],
adjacency: &[(usize, usize, f64)],
) -> Result<Vec<Vec<f64>>> { ... }
}Expand description
Core trait for GNN layers following the message-passing paradigm
Implementors must provide aggregate (neighbourhood → message) and
update (message + self → new embedding) methods.