はじめに この記事では、Cの構造体におけるいわゆるZero-length Array / Flexible Array Member(このイディオム自体知らなかったわけですが)をRustのFFIから扱う際にstd::mem::transmuteを使って強引にキャストしていました。その後いろいろ試したところ、特にtransmuteが必須というわけでもなかった、ということが分かりましたので、現時点で妥当と思うやり方を書いておきます。 (もっといいやり方がありましたらお教えください)
スマートポインタのことをスマポって略してみました。 Rustのポインタ・所有権管理は本当にくっっそ面倒もとい厳格です。 使える武器を全部知っておかないと、ちょっとしたプログラムを書くのにも苦労間違いなしです。 だいたいのチュートリアルではBoxとRcの簡単な使い方には触れますが、意外とCellやmut変数の使い方に触れてるものが少ない(ような気がした)ので書きました。 (注:型を読者にわかりやすくするために、変数宣言ではlet a : i32のように型を記入していますが、本来ほとんどが省略可能です) mutな参照 let mut a : i32 = 1; { let ref_to_a : &mut i32 = &mut a; *ref_to_a = 32; } println!("a = {}", a); // a = 32 これはまぁ、普通に言語チュートリアルでも出てくるようなプログラム
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く