pub struct SymLibTableFile;Implementations§
Source§impl SymLibTableFile
impl SymLibTableFile
Sourcepub fn read<P: AsRef<Path>>(path: P) -> Result<SymLibTableDocument, Error>
pub fn read<P: AsRef<Path>>(path: P) -> Result<SymLibTableDocument, Error>
Examples found in repository?
examples/symlib_roundtrip.rs (line 15)
10fn main() -> Result<(), String> {
11 let mut args = env::args().skip(1);
12 let in_path = args.next().map(PathBuf::from).ok_or_else(usage)?;
13 let out_path = args.next().map(PathBuf::from).ok_or_else(usage)?;
14
15 let mut doc = SymLibTableFile::read(&in_path).map_err(|e| e.to_string())?;
16 doc.set_version(7)
17 .rename_library("S", "S_EDITED")
18 .add_library("Extra", "${KIPRJMOD}/Extra.kicad_sym");
19
20 doc.write(&out_path).map_err(|e| e.to_string())?;
21 let reread = SymLibTableFile::read(&out_path).map_err(|e| e.to_string())?;
22
23 println!("input: {}", in_path.display());
24 println!("output: {}", out_path.display());
25 println!("library_count: {}", reread.ast().library_count);
26 println!(
27 "first_library_name: {:?}",
28 reread.ast().libraries.first().and_then(|l| l.name.clone())
29 );
30 println!("unknown_nodes: {}", reread.ast().unknown_nodes.len());
31
32 Ok(())
33}More examples
examples/read_all.rs (line 30)
8fn main() -> Result<(), Box<dyn std::error::Error>> {
9 let base = PathBuf::from(env!("CARGO_MANIFEST_DIR"))
10 .join("examples")
11 .join("data");
12
13 let pcb = PcbFile::read(base.join("sample.kicad_pcb"))?;
14 println!("pcb version: {:?}", pcb.ast().version);
15 println!("pcb unknown nodes: {}", pcb.ast().unknown_nodes.len());
16
17 let footprint = FootprintFile::read(base.join("sample.kicad_mod"))?;
18 println!("footprint version: {:?}", footprint.ast().version);
19
20 let schematic = SchematicFile::read(base.join("sample.kicad_sch"))?;
21 println!("schematic version: {:?}", schematic.ast().version);
22 println!(
23 "schematic unknown nodes: {}",
24 schematic.ast().unknown_nodes.len()
25 );
26
27 let table = FpLibTableFile::read(base.join("fp-lib-table"))?;
28 println!("fp libs: {}", table.ast().library_count);
29
30 let sym_table = SymLibTableFile::read(base.join("sym-lib-table"))?;
31 println!("sym libs: {}", sym_table.ast().library_count);
32
33 let dru = DesignRulesFile::read(base.join("sample.kicad_dru"))?;
34 println!("rules: {}", dru.ast().rule_count);
35 println!("rule constraints: {}", dru.ast().total_constraint_count);
36
37 let project = ProjectFile::read(base.join("sample.kicad_pro"))?;
38 println!("project meta version: {:?}", project.ast().meta_version);
39
40 let worksheet = WorksheetFile::read(base.join("sample.kicad_wks"))?;
41 println!("worksheet version: {:?}", worksheet.ast().version);
42 println!("worksheet tbtext count: {}", worksheet.ast().tbtext_count);
43
44 pcb.write_mode("/tmp/out.kicad_pcb", WriteMode::Lossless)?;
45 Ok(())
46}examples/symlib_corpus_roundtrip.rs (line 53)
24fn main() -> Result<(), String> {
25 let mut args = std::env::args().skip(1);
26 let input_dir = args.next().map(PathBuf::from).ok_or_else(usage)?;
27 let output_dir = args.next().map(PathBuf::from).ok_or_else(usage)?;
28
29 let mut files = Vec::new();
30 collect_symlib_files(&input_dir, &mut files)?;
31 files.sort();
32
33 if files.is_empty() {
34 return Err(format!(
35 "no sym-lib-table files found under {}",
36 input_dir.display()
37 ));
38 }
39
40 let mut ok = 0usize;
41 let mut failed = 0usize;
42 for path in files {
43 let rel = path
44 .strip_prefix(&input_dir)
45 .map_err(|e| format!("strip_prefix {}: {e}", path.display()))?;
46 let out_path = output_dir.join(rel);
47 if let Some(parent) = out_path.parent() {
48 fs::create_dir_all(parent)
49 .map_err(|e| format!("create_dir_all {}: {e}", parent.display()))?;
50 }
51
52 let result = (|| -> Result<(), String> {
53 let doc = SymLibTableFile::read(&path).map_err(|e| format!("read: {e}"))?;
54 doc.write(&out_path).map_err(|e| format!("write: {e}"))?;
55 let _ = SymLibTableFile::read(&out_path).map_err(|e| format!("reread: {e}"))?;
56 Ok(())
57 })();
58
59 match result {
60 Ok(()) => {
61 ok += 1;
62 println!("ok: {}", path.display());
63 }
64 Err(err) => {
65 failed += 1;
66 eprintln!("fail: {} -> {}", path.display(), err);
67 }
68 }
69 }
70
71 println!("summary: ok={ok} failed={failed}");
72 if failed > 0 {
73 return Err(format!("{failed} files failed"));
74 }
75 Ok(())
76}Auto Trait Implementations§
impl Freeze for SymLibTableFile
impl RefUnwindSafe for SymLibTableFile
impl Send for SymLibTableFile
impl Sync for SymLibTableFile
impl Unpin for SymLibTableFile
impl UnsafeUnpin for SymLibTableFile
impl UnwindSafe for SymLibTableFile
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more