|
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);
}
NHKオンライン | Eテレ 0655やNHKオンライン | Eテレ 2355好きですね。ピタゴラスイッチ - キッズワールド NHK Eテレ こどもポータルはひかぞーが小さい頃から観てました。
ハッとする視点が面白い本です。オススメ。
?って何ってことなんですが、単純にquestion markでググりました。
Rust: The `?` operator · m4rw3rの解説がわかりやすいな。
Announcing Rust 1.22 (and 1.22.1) - The Rust Programming Language BlogからOptionでも?が使えるのかのぉ。