Wrapper Types

Rust有多种 “封装 “类型,如RefCellMutex,它们为值提供了特殊行为。访问这些值可能会耗费大量的时间。如果多个这样的值通常是一起访问的,那么最好将它们放在一个包装器中。

例如,这样的结构。

#![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)>>,
}
}

这是否有助于性能,将取决于值的具体访问模式。 Example.