ラッパー型
(原文)
Rust は RefCell
や Mutex
のような、値に対して特別な働きを持つ様々なラッパー型を提供しています。そのような値へのアクセスは無視できない回数になることもあります。もしそのような複数の値が同時にアクセスされる場合には、それらを単一のラッパーに包んだ方が良いでしょう。
例えば以下のような構造体は:
#![allow(unused)] fn main() { use std::sync::{Arc, Mutex}; struct S { x: Arc<Mutex<u32>>, y: Arc<Mutex<u32>>, } }
このように表現した方が良いでしょう:
#![allow(unused)] fn main() { use std::sync::{Arc, Mutex}; struct S { xy: Arc<Mutex<(u32, u32)>>, } }
これがパフォーマンスの向上につながるかは、値への実際のアクセスパターンに依存します。