From 60d9880ab297f1362723a58856736ac5e795d462 Mon Sep 17 00:00:00 2001 From: Alain Emilia Anna Zscheile Date: Fri, 27 Sep 2024 16:29:52 +0200 Subject: [PATCH] specctra/design: remove code duplication at padstack lookup --- src/specctra/design.rs | 13 ++++--------- src/specctra/structure.rs | 6 ++++++ 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/specctra/design.rs b/src/specctra/design.rs index d703e23..fe67692 100644 --- a/src/specctra/design.rs +++ b/src/specctra/design.rs @@ -242,12 +242,10 @@ impl SpecctraDesign { let pinname = format!("{}-{}", place.name, pin.id); let net = pin_nets.get(&pinname).unwrap(); - let padstack = &self + let padstack = self .pcb .library - .padstacks - .iter() - .find(|padstack| padstack.name == pin.name) + .find_padstack_by_name(&pin.name) .unwrap(); for shape in padstack.shapes.iter() { @@ -319,13 +317,10 @@ impl SpecctraDesign { .netname_net(&via.net) .unwrap(); - // find the padstack referenced by this via placement - let padstack = &self + let padstack = self .pcb .library - .padstacks - .iter() - .find(|padstack| padstack.name == via.name) + .find_padstack_by_name(&via.name) .unwrap(); let get_layer = |board: &Board, name: &str| diff --git a/src/specctra/structure.rs b/src/specctra/structure.rs index 897ab2b..5e932f0 100644 --- a/src/specctra/structure.rs +++ b/src/specctra/structure.rs @@ -169,6 +169,12 @@ pub struct Library { pub padstacks: Vec, } +impl Library { + pub fn find_padstack_by_name(&self, name: &str) -> Option<&Padstack> { + self.padstacks.iter().find(|padstack| &padstack.name == name) + } +} + #[derive(ReadDsn, WriteSes, Debug)] pub struct Image { #[anon]