Rust, typed: zero sized types and type states

What are type states?

A type state in rust, also known as zero-sized types, is a type that would have a size of zero. Zero-sized types are significant because they allow for complete erasure of the runtime space that would be allocated for that type. The compiler makes use of this special case to make large optimizations that completely remove the cost of delegating to that type or one of its methods. This sort of extreme optimization is part of the zero-cost abstractions feature of Rust. When possible, Rust will allow for mental abstractions in code that create zero runtime penalty.

struct State1;
struct State2;