autoimpltrait

```rust

[autoimpltrait("./src/rect_trait.rs", Rect, "runtime")]

[doc = "Test this will keep after expand"]

[derive(Debug)]

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;

[doc = "Test this will keep after expand"]

[derive(Debug)]

struct Square { side: i32, } impl Rect for Square { type Item = crate::item::Item; fn area(&self) -> Self::Item { ::area(self) } fn perimeter(&self) -> Self::Item { ::perimeter(self) } fn scale(&mut self, scale: Self::Item) { ::scale(self, scale) } } ```