Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //#![feature(nll)]
- use std::marker::PhantomData;
- use std::mem::transmute;
- use std::os::raw::c_void;
- struct Handler<'a> {
- _marker: PhantomData<std::cell::Cell<&'a ()>>,
- }
- impl<'a> Handler<'a> {
- pub fn on_change<T>(&self, data: &'a T)
- where
- T: 'a,
- {
- unsafe {
- let user_data: *const c_void = transmute(data);
- println!("{:?}", user_data)
- }
- }
- }
- fn main() {
- let foo = 1; // this line should be valid
- let handler = Handler {
- _marker: PhantomData,
- };
- //let foo = 1; // this line should be illegal
- handler.on_change(&foo);
- handler.on_change(&foo);
- }
Add Comment
Please, Sign In to add comment