Optimize DesiredTargets: Avoid mem alloc on clone

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
Jiahao XU 2022-07-19 11:59:10 +10:00
parent d58f340a45
commit 758dab7d4f
No known key found for this signature in database
GPG key ID: 591C0B03040416D6

View file

@ -11,7 +11,7 @@ pub const TARGET: &str = env!("TARGET");
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
enum DesiredTargetsInner { enum DesiredTargetsInner {
AutoDetect(Arc<OnceCell<Vec<String>>>), AutoDetect(Arc<OnceCell<Vec<String>>>),
Initialized(Vec<String>), Initialized(Arc<Vec<String>>),
} }
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
@ -19,7 +19,7 @@ pub struct DesiredTargets(DesiredTargetsInner);
impl DesiredTargets { impl DesiredTargets {
fn initialized(targets: Vec<String>) -> Self { fn initialized(targets: Vec<String>) -> Self {
Self(DesiredTargetsInner::Initialized(targets)) Self(DesiredTargetsInner::Initialized(Arc::new(targets)))
} }
fn auto_detect() -> Self { fn auto_detect() -> Self {