```rust
struct Square { side: i32, } ```
Will expand to
```rust mod item; mod area; mod perimeter; mod scale; mod _CGQAQSUPERTRAIT__ { pub mod runtime { use std::ops::{Add, Sub, Mul, Div};
pub trait Rect {
type Item: Add + Sub + Mul + Div;
fn area(&self) -> Self::Item;
fn perimeter(&self) -> Self::Item;
fn scale(&mut self, scale: Self::Item);
}
}
pub use runtime::Rect;
} pub mod Rect_area { pub type Item = crate::item::Item;
pub trait __Rect_area__ { fn area(&self) -> Item; }
} pub mod Rect_perimeter { pub type Item = crate::item::Item;
pub trait __Rect_perimeter__ { fn perimeter(&self) -> Item; }
} pub mod Rect_scale { pub type Item = crate::item::Item;
pub trait __Rect_scale__ { fn scale(&mut self, scale: Item); }
} use _CGQAQSUPERTRAIT__::Rect;
struct Square {
side: i32,
}
impl Rect for Square {
type Item = crate::item::Item;
fn area(&self) -> Self::Item {