私は、Vec<RefCell<T>>
のようなクラスを探しています。それは究極のオーナー&のすべてのデータのアロケータですが、アレイのさまざまな部分を無期限に複数のパーティーから借用することができます。RefCellのようなより親しみやすいオブジェクトがありますか?
ため、私はまたmutably複数の当事者で借りることができVec<T>
のコース個の無期限を強調するが、これは関係者が借りて行われた後にのみ解決できる分割を行うことが含まれます。
Vec<RefCell<T>>
は、unstableと思われるの文をチェックすると、多くの醜いif
ステートメントのようです。あなたが何か間違っているなら、kablammo!パニック!これは貸出図書館のようなものではありません。貸出図書館では、そこにない本を尋ねると、「ああ、チェックアウトされました」と伝えます。誰も爆発で死ぬことはない。
だから私はこのようなコードに何か書きたいと思います:
let mut a = LendingLibrary::new();
a.push(Foo{x:10});
a.push(Foo{x:11});
let b1 = a.get(0); // <-- b1 is an Option<RefMut<Foo>>
let b2 = a.get(1); // <-- b2 is an Option<RefMut<Foo>>
// the 0th element has already been borrowed, so...
let b3 = a.get(0); // <-- b3 is Option::None
ようなものが存在していますか?あるいは、このような振る舞いを得るための別の標準的な方法がありますか?フレンドリーRefCellの一種?
答えが「はい」の場合は、スレッドセーフバリアントもありますか?