Struct

In Verus, just as in Rust, you can use struct to define a datatype that collects a set of fields together:

struct Point { x: int, y: int, }

Spec and exec code can refer to struct fields:

impl Point { spec fn len2(&self) -> int { self.x * self.x + self.y * self.y } } fn rotate_90(p: Point) -> (o: Point) ensures o.len2() == p.len2() { let o = Point { x: -p.y, y: p.x }; assert((-p.y) * (-p.y) == p.y * p.y) by(nonlinear_arith); o }