struct Tree { mut: garbage int parent ?&Tree } fn main() { // `parent` is not declared as mutable! parent := Tree{ garbage: 11 } // taking a reference of `parent` and putting it under a `mut:` struct field mut child := Tree{ parent: &parent } // unwrap the reference of `parent`, but declare it as `mut` mut inner_parent := child.parent? inner_parent.garbage = 777 // !we can mutate `parent` freely! println(parent.garbage) // 777 }