ラッパー型
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)>>, } }
これがパフォーマンスの向上に役立つかどうかは、値の正確なアクセスパターンに依存します。 例.