From f37e7ce88dd40fab60e21e5cad6e4d6ee376a62b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Cicho=C5=84?= Date: Sun, 16 Jun 2024 20:01:38 +0200 Subject: [PATCH] specctra: pass errors to app instead of panicking --- src/specctra/design.rs | 26 ++++++++++---------------- src/specctra/structure.rs | 2 +- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/src/specctra/design.rs b/src/specctra/design.rs index 53e1be0..79391bc 100644 --- a/src/specctra/design.rs +++ b/src/specctra/design.rs @@ -9,9 +9,9 @@ use crate::{ layout::{zone::SolidZoneWeight, Layout}, math::Circle, specctra::{ - read, + read::{self, ListTokenizer}, mesadata::SpecctraMesadata, - structure::{self, Layer, Pcb, Shape, SpecctraFile}, + structure::{self, Layer, Pcb, Shape, DsnFile}, }, }; @@ -33,8 +33,12 @@ impl SpecctraDesign { let file = std::fs::File::open(filename)?; let reader = std::io::BufReader::new(file); let mut list_reader = read::ListTokenizer::new(reader); + let dsn = list_reader.read_value::()?; + + Ok(Self { + pcb: dsn.pcb, + }) - if let Ok(file) = list_reader.read_value::() { //use super::structure::*; // (this entire if let block does not belong here) @@ -101,24 +105,14 @@ impl SpecctraDesign { };*/ //println!("{:?}", list_writer.write_value(&ses)); - - Ok(Self { pcb: file.pcb }) - } else { - todo!(); - } } pub fn load_from_string(contents: String) -> Result { - /*let dsn = de::from_str::(&contents) - .map_err(|err| LoadingError::Syntax(err))? - .pcb; - - Ok(Self { pcb })*/ - let mut list_reader = read::ListTokenizer::new(contents.as_bytes()); - let dsn = list_reader.read_value::(); + let mut list_reader = ListTokenizer::new(contents.as_bytes()); + let dsn = list_reader.read_value::()?; Ok(Self { - pcb: dsn.unwrap().pcb, + pcb: dsn.pcb, }) } diff --git a/src/specctra/structure.rs b/src/specctra/structure.rs index 0714672..753057f 100644 --- a/src/specctra/structure.rs +++ b/src/specctra/structure.rs @@ -45,7 +45,7 @@ pub struct NetOut { } #[derive(ReadDsn, WriteSes, Debug)] -pub struct SpecctraFile { +pub struct DsnFile { pub pcb: Pcb, }