Turns out it's possible to violate safety in Rust with Rc and integer overflow: https://internals.rust-lang.org/t/rc-is-unsafe-mostly-on-32-bit-targets-due-to-overflow/2120