specctra/design: remove code duplication at padstack lookup

This commit is contained in:
Alain Emilia Anna Zscheile 2024-09-27 16:29:52 +02:00
parent cd12775f46
commit 60d9880ab2
2 changed files with 10 additions and 9 deletions

View File

@ -242,12 +242,10 @@ impl SpecctraDesign {
let pinname = format!("{}-{}", place.name, pin.id); let pinname = format!("{}-{}", place.name, pin.id);
let net = pin_nets.get(&pinname).unwrap(); let net = pin_nets.get(&pinname).unwrap();
let padstack = &self let padstack = self
.pcb .pcb
.library .library
.padstacks .find_padstack_by_name(&pin.name)
.iter()
.find(|padstack| padstack.name == pin.name)
.unwrap(); .unwrap();
for shape in padstack.shapes.iter() { for shape in padstack.shapes.iter() {
@ -319,13 +317,10 @@ impl SpecctraDesign {
.netname_net(&via.net) .netname_net(&via.net)
.unwrap(); .unwrap();
// find the padstack referenced by this via placement let padstack = self
let padstack = &self
.pcb .pcb
.library .library
.padstacks .find_padstack_by_name(&via.name)
.iter()
.find(|padstack| padstack.name == via.name)
.unwrap(); .unwrap();
let get_layer = |board: &Board<SpecctraMesadata>, name: &str| let get_layer = |board: &Board<SpecctraMesadata>, name: &str|

View File

@ -169,6 +169,12 @@ pub struct Library {
pub padstacks: Vec<Padstack>, pub padstacks: Vec<Padstack>,
} }
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)] #[derive(ReadDsn, WriteSes, Debug)]
pub struct Image { pub struct Image {
#[anon] #[anon]