// run-pass | |
#![allow(dead_code)] | |
use std::cell::Cell; | |
#[derive(Copy, Clone)] | |
struct Point {x: isize, y: isize, z: isize} | |
fn f(p: &Cell<Point>) { | |
assert_eq!(p.get().z, 12); | |
p.set(Point {x: 10, y: 11, z: 13}); | |
assert_eq!(p.get().z, 13); | |
} | |
pub fn main() { | |
let a: Point = Point {x: 10, y: 11, z: 12}; | |
let b: &Cell<Point> = &Cell::new(a); | |
assert_eq!(b.get().z, 12); | |
f(b); | |
assert_eq!(a.z, 12); | |
assert_eq!(b.get().z, 13); | |
} |