Internal references as a separate type

Not sure.. but let me try:

struct Node {..}

struct Edge<'a> {
    start : &'a Node,
    end : &'a Node,
}

struct Graph {
    nodes : Vec<Node>,
    edges : Vec<Edge<'nodes>>,
}

Or

struct Node<'a> {
    prev : Option<&'a Node<'a>>,
    next : Option<&'a Node<'a>>,
}

struct List {
    nodes : Vec<Node<'nodes>>,
}

@comex, are any of these the existential lifetimes you referred to? Couldn't find much talk about them..

P.S. above structures could be easily created when one knows the number of nodes in advance; otherwise they seem a bit painful to construct or extend..