// 모듈 B. A의 표면에만 의존한다. // // Shape의 variant가 늘면 이 match가 깨진다 — 그래서 enum 정의 본문이 // interface hash 입력이고, A의 시그니처 변경은 여기까지 전파되어야 한다. import "shapes" as Shapes pub fn area(s: Shapes.Shape) -> Int { match s { Shapes.Circle(r) => Shapes.double(r), Shapes.Square(w) => w * w, } }