|
ToDo:
|
ポインタのお勉強です。Boxはinto_raw/from_rawで取得できますが所有権も移動するんですね。
fn main(){
let x;
{
x = Box::new(1234);
}
let y;
y = &x as *const Box<i32>;
println!("y pointer = {:?}",y);
unsafe{
println!("y value = {:?}",*y);
}
println!("x value = {}",x);
let _y = Box::into_raw(x);
println!("_y pointer = {:?}",_y);
// into_rawで所有権の移動が発生するのでxは死んでいる
//println!("x value = {}",x);
let _x;
unsafe{
_x = Box::from_raw(_y);
println!("from raw {:}",_x);
}
// into_rawはポインタの指し先を戻すだけなので?所有権は移動しない?
println!("_y pointer = {:?}",_y);
}