C++ vs Rustat TECH
C++ vs Rust - 暇つぶし2ch554:デフォルトの名無しさん
21/11/29 00:30:08.36 4MgUQE5v.net
>>534
Rustはもっと単純
生ポインタを使えばC言語と全く同じ状態となる
fn main() {
 let mut a: i32 = 123;
 let raw_pointer = &mut a as *mut i32; // aの生ポインタを得る (unsafe不要)
 let b = &a; // bがaの参照を借用
 // a = 456; // これは借用ルールによりコンパイルエラーとなり書き換えできない
 unsafe { *raw_pointer = 456; } // 生ポインタを使えば自由自在に書き換え可能
 assert_eq!(a, 456); // 借用ルールを逸脱して書き換わっている
 assert_eq!(*b, 456); // 借用している参照bから見ても当然書き換わっている
}
じゃあUnsafeCellなどはいつ使うの?と思うだろうけど
それはRustで安全な型を提供するための部品として用いる
例えばRefCellやOnceCellなどの安全な型は部品としてUnsafeCellを用いている


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch