type Point { x: i32, y: i32, } type Holder { point: Point, } fn read_x(point: ref) -> i32 { return point.x } fn write_x(point: mutref, value: i32) -> Void { point.x = value } pub fn main(world: World) -> Void raises { var point: Point = Point { x: 1, y: 2 } var holder: Holder = Holder { point: Point { x: 3, y: 4 } } if true { let shared: ref = &point if read_x(shared) != 1 { check world.out.write("borrow primitives failed\n") return } } write_x(&mut point, 5) write_x(&mut holder.point, 9) if point.x == 5 && holder.point.x == 9 { check world.out.write("borrow primitives ok\n") } else { check world.out.write("borrow primitives failed\n") } }