I've been tinkering with Linked Lists trying to implement one for a while, and after failing numerous times, I've come across something that looks functional.
However, I don't understand why this is working.
My expectation here would be that the compiler would not allow me to run this, as node itself is under a mutable borrow, meaning that I cannot access the node.next through a borrow, or a mutable one either way.
Is it allowed due to the fact that node is no longer accessed?
Yes; because you are using node exactly once, the lifetime of a borrow from it may be just as long as the current_node it borrows from. If you used node further after current_node = &mut node.next, then the borrow &mut node.next would have to have a shorter lifetime not overlapping with that second use, and so it could not be assigned to current_node.
That is because current_node is only reborrowing node.next, so node.value can still be accessed through node. The Rust compiler is fortunately smart enough to treat different fields of a struct as distinct places that can be separately borrowed.