u_nesting/
lib.rs

1//! # U-Nesting
2//!
3//! Domain-agnostic 2D/3D spatial optimization engine.
4//!
5//! This crate provides algorithms for:
6//! - **2D Nesting**: Polygon placement optimization (cutting, packing)
7//! - **3D Bin Packing**: Box placement in containers
8//!
9//! ## Quick Start
10//!
11//! ```rust,ignore
12//! use u_nesting::d2::{Nester2D, Geometry2D, Boundary2D};
13//! use u_nesting::core::{Solver, Config, Strategy};
14//!
15//! // Create geometries and boundary
16//! let boundary = Boundary2D::new(1000.0, 500.0);
17//! let geometries = vec![/* your polygons */];
18//!
19//! // Solve
20//! let mut nester = Nester2D::new(boundary, geometries);
21//! let result = nester.solve(&Config::default())?;
22//! ```
23//!
24//! ## Feature Flags
25//!
26//! - `d2` (default): 2D nesting algorithms
27//! - `d3` (default): 3D bin packing algorithms
28//! - `serde`: Serialization support
29
30/// Core traits and abstractions.
31pub use u_nesting_core as core;
32
33/// 2D nesting algorithms.
34#[cfg(feature = "d2")]
35pub use u_nesting_d2 as d2;
36
37/// 3D bin packing algorithms.
38#[cfg(feature = "d3")]
39pub use u_nesting_d3 as d3;
40
41// Re-export commonly used types at root level
42pub use u_nesting_core::{Config, Placement, Solver, SolveResult, Strategy};