14 包装类型

Newtype 与透明包装

译文 · 基于 The Rust Performance Book

包装类型

原文链接: https://nnethercote.github.io/perf-book/wrapper-types.html

Rust 有多种为值提供特殊行为的「包装」类型,例如 RefCell 和 Mutex。访问这些值可能花费可观时间。若多个此类值通常一起访问,把它们放在同一个包装里可能更好。

例如,下面这种结构:

1
2
3
4
5
# use std::sync::{Arc, Mutex};
struct S {
    x: Arc<Mutex<u32>>,
    y: Arc<Mutex<u32>>,
}

可能更适合表示为:

1
2
3
4
# use std::sync::{Arc, Mutex};
struct S {
    xy: Arc<Mutex<(u32, u32)>>,
}

这是否有助于性能取决于这些值的具体访问模式。 示例。

最后修改 August 23, 2026: 更新 (499855b16)