You're trying to create a self-referential struct with multiple mutable borrows of itself. That's disallowed in all manner of ways.
You should be aware that
push_self_number(&mut self) takes a unique borrow of
self, i.e., the entire struct. Thus you can't modify the vec when you've already got a unique reference to it. The rust ownership model also requires that types generally be relocatable in memory, and any struct with self-borrows cannot be moved without being invalidated, so it isn't so easy to construct such a thing.
It is best to think of
&mut as offering you mutually exclusive access to data, not merely allowing mutation of it.