1つだけ外したい場合はOption+mem::take/replace使うのが自然だと思う
https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=a84a532ace40d2bb6603510ca1307756
探検
Rust part29
591デフォルトの名無しさん
2025/05/18(日) 18:24:32.38ID:UkfPMCWK592デフォルトの名無しさん
2025/05/18(日) 19:24:49.27ID:HgIqS8Uk 590だけど1.86で追加されたget_disjoint_mutが使えるかもしれない
少し癖があるけどsplitの代替になるかな
fn main() {
let mut v = vec![1, 2, 3, 4, 5];
let len = v.len();
for i in 0..len {
let Ok([init, [mid], tail]) = v.get_disjoint_mut([0..i, i..i + 1, i + 1..len]) else {
panic!();
};
*mid *= 2;
println!("{init:?} {mid} {tail:?}");
}
}
少し癖があるけどsplitの代替になるかな
fn main() {
let mut v = vec![1, 2, 3, 4, 5];
let len = v.len();
for i in 0..len {
let Ok([init, [mid], tail]) = v.get_disjoint_mut([0..i, i..i + 1, i + 1..len]) else {
panic!();
};
*mid *= 2;
println!("{init:?} {mid} {tail:?}");
}
}
593デフォルトの名無しさん
2025/05/18(日) 21:02:54.43ID:tnDwO9ym594デフォルトの名無しさん
2025/05/18(日) 21:12:32.00ID:6WAEpSNG595デフォルトの名無しさん
2025/05/18(日) 21:37:30.85ID:GL3oFIgT 借用チェッカの気持ちとしては、同じオブジェクトへの可変参照が複数ある状態を防ごうとするんだよね
fn act(&mut self, others: &mut [Unit]) { }
の中で、 self を操作しただけで others に影響が出たり、 others への操作が self に影響したりするというのは
潜在的なバグの原因になり得る (読み手にとって意図せぬ動作になり得る) から、そうならないことをコンパイル時に保証しようとする
なので >>587 では、act に渡された時点で self と others は確実に違うものだと分かるコードにすることで、借用チェックの条件をクリアしている
内部可変性は逆に、コンパイル時はいったん不変参照ということにしておいて、実行時に可変借用として取り出すための型
これは「同じオブジェクトへの可変参照は同時に一つまで」というルールを、借用チェッカーではなく自己責任で行うという考え
(「可変参照は同時に一つまで」というルールは変わらないし、実行時にこれを検査する動作になるので、若干のオーバーヘッドはある)
個人的には >>589 も納得できる考えで、エンティティ (idで同一性を検査するオブジェクト) ならそれでいいよねとも思う
Async が絡むと Mutex という別の型 (これも内部可変性と関係する) が出てくるけど、これはまた別のトピックになるので割愛
fn act(&mut self, others: &mut [Unit]) { }
の中で、 self を操作しただけで others に影響が出たり、 others への操作が self に影響したりするというのは
潜在的なバグの原因になり得る (読み手にとって意図せぬ動作になり得る) から、そうならないことをコンパイル時に保証しようとする
なので >>587 では、act に渡された時点で self と others は確実に違うものだと分かるコードにすることで、借用チェックの条件をクリアしている
内部可変性は逆に、コンパイル時はいったん不変参照ということにしておいて、実行時に可変借用として取り出すための型
これは「同じオブジェクトへの可変参照は同時に一つまで」というルールを、借用チェッカーではなく自己責任で行うという考え
(「可変参照は同時に一つまで」というルールは変わらないし、実行時にこれを検査する動作になるので、若干のオーバーヘッドはある)
個人的には >>589 も納得できる考えで、エンティティ (idで同一性を検査するオブジェクト) ならそれでいいよねとも思う
Async が絡むと Mutex という別の型 (これも内部可変性と関係する) が出てくるけど、これはまた別のトピックになるので割愛
596デフォルトの名無しさん
2025/05/18(日) 22:38:23.16ID:vhS9Z2b5 なにかへまったら話題変更のために自演を始めるんかな?
と思ってしまう
いつも大体そんな流れだし急にポップしてくるこのスレの話題は理論寄りが多いのも変な感じする
と思ってしまう
いつも大体そんな流れだし急にポップしてくるこのスレの話題は理論寄りが多いのも変な感じする
レスを投稿する
ニュース
- なぜ人は“飲食店でのスマホ注文”に不満を抱くのか?「通信料がかかる」「細かいカスタマイズができない」「LINE登録なんて絶対に嫌」 [ぐれ★]
- 機動戦士ガンダム最新作『GQuuuuuuX(ジークアクス)』乃木坂46ネタで炎上 監督の鶴巻和哉氏は乃木坂ファン ★7 [Anonymous★]
- 自民 森山幹事長 消費税扱い“ポピュリズム政治は国がもたず” ★2 [少考さん★]
- 反撃の中居正広、一世一代の大勝負へ 元フジ女性アナとは「合意の上での性行為だった」と認識 ★19 [Ailuropoda melanoleuca★]
- 【芸能】マックのハッピーセット、おもちゃ目当てに食品を放置…大量廃棄の映像拡散 猪狩ともかも怒りの声「転売ヤー滅びて」 [ぐれ★]
- 【埼玉】川口市の路上で全裸が発生 小太りの年配男性だという [シャチ★]
- 【DAZN】フォーミュラGP【F1 F2F3 SF P】Lap1698
- 【フジテレビ】2025 FORMULA 1【NEXT】Lap105
- とらせん 4次会
- はません ★3
- 【NJPW】新日本プロレスワールド part.2290
- やくせん
- 【悲報】福井県民の大多数は大阪万博に行く気がないことが判明する😢 [616817505]
- 日本は崩壊寸前です。じゃあどこの国なら生きていけるのか・・・海外逃亡するならば具体的にどこに移住するべき? [677076729]
- 【緊急】AI失業、マジで始まる ※日本人には関係ありません [159091185]
- ▶原点回帰ホロライブスレ
- ゲゲゲの鬼太郎の猫娘(ネコ娘)さん、魔改造され大炎上🔥🔥🔥 [151291598]
- コメ高騰 世論調査「従来の価格が安すぎた19.9%」👈 [399259198]