pub fn canvas(draw: impl Fn(&mut Draw, Size) + 'static) -> AnyPiece
The drawing closure is a binding: signal reads re-record; layout size changes re-record (via FrameChanged); replay is equality-gated by DrawOp’s PartialEq (§4.2).