1. Type erasure
2. Using sealed classes requires instantiation, while the Rust version is zero overhead.
There is no need to access type information at runtime here.
There is no need to access type information at runtime here.