1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
//! Zero-dependency ONNX model parser and encoder for Rust.
//!
//! Parses `.onnx` files (protobuf wire format) directly into typed Rust
//! AST structs without relying on `prost`, `protobuf`, or any other crate.
//!
//! # Quick start
//!
//! ```
//! use onnx_rs::ast::*;
//!
//! // Build a minimal ONNX model
//! let model = Model {
//! ir_version: 9,
//! producer_name: "example",
//! opset_import: vec![OperatorSetId { domain: "", version: 19 }],
//! graph: Some(Graph {
//! name: "main",
//! node: vec![Node {
//! op_type: OpType::Relu,
//! input: vec!["X"],
//! output: vec!["Y"],
//! ..Default::default()
//! }],
//! ..Default::default()
//! }),
//! ..Default::default()
//! };
//!
//! // Encode to protobuf bytes (suitable for writing to a .onnx file)
//! let bytes = onnx_rs::encode(&model);
//!
//! // Parse the bytes back into a Model
//! let parsed = onnx_rs::parse(&bytes).unwrap();
//! assert_eq!(parsed.ir_version, 9);
//! assert_eq!(parsed.producer_name, "example");
//!
//! let graph = parsed.graph.as_ref().unwrap();
//! assert_eq!(graph.node[0].op_type, OpType::Relu);
//! ```
//!
//! # Reading a .onnx file from disk
//!
//! ```no_run
//! let bytes = std::fs::read("model.onnx").unwrap();
//! let model = onnx_rs::parse(&bytes).unwrap();
//! println!("producer: {}", model.producer_name);
//! ```
pub use Model;
pub use encode;
pub use Error;
pub use parse;