// run-pass | |
#![allow(dead_code)] | |
use std::cell::Cell; | |
#[derive(Copy)] | |
struct Foo { | |
x: isize | |
} | |
impl Clone for Foo { | |
fn clone(&self) -> Foo { | |
// Using Cell in any way should never cause clone() to be | |
// invoked -- after all, that would permit evil user code to | |
// abuse `Cell` and trigger crashes. | |
panic!(); | |
} | |
} | |
pub fn main() { | |
let x = Cell::new(Foo { x: 22 }); | |
let _y = x.get(); | |
let _z = x.clone(); | |
} |