From 46e935b9f65e61fea63d4f64975ffb6d0f0435d0 Mon Sep 17 00:00:00 2001 From: hakki Date: Thu, 5 Sep 2024 18:55:58 +0200 Subject: [PATCH] specctra: added scraped-examples --- Cargo.toml | 3 +++ examples/example.dsn | 0 examples/specctra.rs | 22 ++++++++++++++++++++++ src/specctra/design.rs | 34 +--------------------------------- 4 files changed, 26 insertions(+), 33 deletions(-) create mode 100644 examples/example.dsn create mode 100644 examples/specctra.rs diff --git a/Cargo.toml b/Cargo.toml index 52f59d6..9a1ba77 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -126,3 +126,6 @@ contracts = { path = "vendored/contracts" } [build-dependencies] clap_mangen = "0.2.23" clap = {version="4.5.8", features = ["derive"] } + +[package.metadata.docs.rs] +cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"] diff --git a/examples/example.dsn b/examples/example.dsn new file mode 100644 index 0000000..e69de29 diff --git a/examples/specctra.rs b/examples/specctra.rs new file mode 100644 index 0000000..fc93b79 --- /dev/null +++ b/examples/specctra.rs @@ -0,0 +1,22 @@ +use std::fs::File; +use std::io::BufReader; +use topola::autorouter::history::History; +use topola::autorouter::invoker::Command; +use topola::autorouter::invoker::Invoker; +use topola::autorouter::selection::PinSelection; +use topola::autorouter::Autorouter; +use topola::specctra::design::SpecctraDesign; + +fn main() -> Result<(), std::io::Error> { + let design_file = File::open("example.dsn")?; + let mut design_bufread = BufReader::new(design_file); + + let design = SpecctraDesign::load(design_bufread).unwrap(); + let board = design.make_board(); + + let mut invoker = Invoker::new(Autorouter::new(board).unwrap()); + + let mut file = File::create("example.ses").unwrap(); + design.write_ses(invoker.autorouter().board(), &mut file); + Ok(()) +} diff --git a/src/specctra/design.rs b/src/specctra/design.rs index 996759b..80ebc35 100644 --- a/src/specctra/design.rs +++ b/src/specctra/design.rs @@ -47,14 +47,6 @@ impl SpecctraDesign { /// # Errors /// /// Returns a `LoadingError` if an I/O error occurs or if the file format is invalid. - /// - /// # Examples - /// - /// ``` - /// let design_file = File::open("random_design.dsn").unwrap(); - /// let design_bufread = BufReader::new(design_file); - /// let design = SpecctraDesign::load(design_bufread).unwrap(); - /// ``` pub fn load(reader: impl std::io::BufRead) -> Result { let mut list_reader = ListTokenizer::new(reader); let dsn = list_reader.read_value::()?; @@ -62,14 +54,7 @@ impl SpecctraDesign { Ok(Self { pcb: dsn.pcb }) } - /// Retrieves the name of the PCB design and return name of the PCB as a string slice. - /// - /// # Examples - /// - /// FIXME add more detailed info - /// ``` - /// let name = design.get_name(); - /// ``` + /// Retrieves the name of the PCB design and return name of the PCB as a string slice. pub fn get_name(&self) -> &str { &self.pcb.name } @@ -79,14 +64,6 @@ impl SpecctraDesign { /// # Errors /// /// Returns an `std::io::Error` if an I/O error occurs while writing the SES file. - /// - /// # Examples - /// - /// ``` - /// let board = invoker.autorouter().board(); - /// let mut writebuf = vec![]; - /// design.write_ses(board, &mut writebuf); - /// ``` pub fn write_ses( &self, board: &Board, @@ -195,15 +172,6 @@ impl SpecctraDesign { /// This method interprets the PCB design and generates a `Board` object /// containing the layout and associated Specctra mesadata . - /// - /// # Examples - /// - /// ``` - /// let design_file = File::open("random_file.dsn")?; - /// let mut design_bufread = BufReader::new(design_file); - /// let design = SpecctraDesign::load(design_bufread).unwrap(); - /// let board = design.make_board(); - /// ``` pub fn make_board(&self) -> Board { let mesadata = SpecctraMesadata::from_pcb(&self.pcb); let mut board = Board::new(Layout::new(Drawing::new(