質問: rustのセルと参照カウントタイプについての全体的な説明が必要 rust標準ライブラリにはいくつかのラッパータイプがあります。 std::cell module : cell および refcell rc や arc などの参照カウントラッパー。 std::sync module : mutex または atomicbool など 私が理解しているように、これらはラッパーであり、単純な参照よりもさらなる可能性を提供します。いくつかの基本を理解していますが、全体像を見ることができません。彼らは正確に何をしますか?セルと参照カウントファミリは、直交または類似の機能を提供しますか?
回答: matthieuの良い答え のおかげで、必要なラッパーを見つけるのに役立つ図を以下に示します。+-----------+ | ownership | +--+--------+ +================+ | +-static----->| t |(1) | | +================+ | | | | +================+ | +-----------+ | local val| cell<t> |(1) +-unique-->| borrowing +--+-dynamic---->|----------------| | +-----------+ | ref| refcell<t> |(1) | | +================+ | | | | +================+ | | threaded | atomict |(2) | +-dynamic---->|----------------| | | mutex<t> |(1) | | rwlock<t> |(1) | +================+ | | | +================+ | +-no--------->| rc<t> | | | +================+ | locally +-----------+ | +-shared-->| mutable? +--+ +================+ | +-----------+ | val| rc<cell<t>> | | +-yes-------->|----------------| | ref| rc<refcell<t>> | | +================+ | | | +================+ | +-no--------->| arc<t> | | | +================+ | shared +-----------+ | +-between->| mutable? +--+ +================+ threads +-----------+ | | arc<atomict> |(2) +-yes-------->|----------------| | arc<mutex<t>> | | arc<rwlock<t>> | +================+ これらの場合、tはbox<t>に置き換えることができます 使用する atomict tがboolまたは数値の場合 mutexとrwlockのどちらを使用すべきかを知るには、 この関連する質問 を参照してください。