[過去ログ] プログラミング言語 Rust 4 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
70(4): 2017/11/07(火)20:38 ID:vWfvN4c5(1) AAS
外部リンク:ideone.com
・AA treeを実装
・1.8.0で主に確認(ideoneは1.14.0)
・Rc<RefCell<Option<Node<T>>>>を中心に実装
・ふんだんにRc::clone()を乱発
・Tも<T: Copy>でコピーしちゃう
・肝心の木の操作部分は、wikipediaでの表現に近くなるように表現
・基本的によく分かってないので色々奇妙な事をしているかもしれない
昔からチラホラ「Rustで木構造は苦しい」と耳にしてて興味があったのと
最近ほかのスレで実装してた人がいたのをみて触発されたので書いた
最初はOption<Rc<Node<T>>>で書いてたけど
RcとRefCellの組み合わせを試してみたくなって方向転換
けっきょくどっちが正解だったのかは不明
73(1): 2017/11/08(水)01:15 ID:T1vINdZw(1) AAS
>>70
「他スレで実装してた人」って俺のことだな。
↓のスレのことだろ?
次世代言語Part7[Go Rust Swift Kotlin TypeScript]
2chスレ:tech
木構造は持ち主(親)が1つに限定されるはずのでRcもRefCellもいらないと思うよ。
実際 、自分はOption<Box<_>>という形で実装してるし。
RcとRefCellの練習するんならグラフ構造とかがいいじゃないかな。
グラフ構造ならRcとRefCellはほぼ必須になるんじゃないかな。
グラフ構造はRustどころかC, C++でも実装したことないから詳しくは分からんけども。
>>72
俺の実装では、Option型のtakeメソッドを使ってるぞ。
そしてtakeメソッドの中ではunsafeが使われてる。だからコピーもないはず。
そのことじゃないのか?俺のほうが何か勘違いしてる??
74(2): 70 2017/11/08(水)20:27 ID:iPjR8aCv(1) AAS
外部リンク:ideone.com
・AA treeを実装
・1.8.0で主に確認(ideoneは1.14.0)
・今回はOption<Box<Node<T>>>中心に実装
・Tも<T: Copy>でコピーしちゃう
・肝心の木の操作部分は、wikipediaでの表現に近くなるように表現
・前の奴>>70のコピペから開始してるから妙なとこ残ってるかも
>>72
wikipedia見ただけでそのへんに着目できたのってすごい
前回は実はそこで一旦あきらめてコピーとOption<T>の導入に踏み切った
今回もTのコピーうんぬんについては挑戦せずそのまんまコピーしてる
77(1): 70 2017/11/09(木)19:44 ID:1u6Rcsa8(1/2) AAS
外部リンク:ideone.com
・>>70の<T: Copy>を<T: Clone>に変更
・ついでにRc付きで運用してみて様子を観察
でっかい構造体の場合はこういうふうなのがマシなのかな
Clone運用してるとこに、さらにRcもってくると気持ちよすぎ
おかげで内部の操作に由来した余計な割り当ては無くなった
CloneトレイトとRcには敬意を表したい
>>75
そこんとこの苦悩はもうしゃあないのかな
それについてはもう思考停止します
78: 77 2017/11/09(木)19:45 ID:1u6Rcsa8(2/2) AAS
×・>>70の<T: Copy>を<T: Clone>に変更
○・>>74の<T: Copy>を<T: Clone>に変更
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.049s