The Rectangle refactor is the moment structs go from "nice to have" to "obviously correct." Good framing to anchor the whole piece around that. One thing worth adding in a follow-up: once you have methods on a struct, the ownership behavior of &self vs &mut self vs consuming self becomes the next natural puzzle. The impl block is where Rust's ownership model starts to feel intentional rather than arbitrary.