cnvx_core/lib.rs
1//! # CNVX Core
2//!
3//! This crate provides the core types and abstractions for defining and solving
4//! optimization problems. It is independent of any particular solver implementation
5//! (e.g., simplex, interior point), and contains the building blocks for variables,
6//! constraints, objectives, and solutions.
7//!
8//! # Modules
9//!
10//! - [`constraint`]: Defines linear constraints and comparison operators ([`Eq`](Cmp::Eq), [`Leq`](Cmp::Leq), [`Geq`](Cmp::Geq)).
11//! - [`expr`]: Linear expressions ([`LinExpr`]) and terms ([`LinTerm`]) for building objectives and constraints.
12//! - [`model`]: The [`Model`] struct, containing variables, constraints, and objectives.
13//! - [`objective`]: Objective functions ([`Objective`]) and builder API.
14//! - [`solution`]: Solution results ([`Solution`]) and methods for accessing variable values.
15//! - [`solver`]: The [`Solver`] trait for solver implementations.
16//! - [`status`]: Solver statuses ([`SolveStatus`]) such as [`Optimal`](SolveStatus::Optimal) or [`Infeasible`](SolveStatus::Infeasible).
17//! - [`var`]: Variable types ([`Var`], [`VarId`]) and builder API ([`VarBuilder`]).
18
19// TODO: Consider moving LP-specific logic into `cnvx-core/lp`
20// to allow non-LP models (e.g., SAT or other problem types) to remain separate.
21
22pub mod constraint;
23pub mod expr;
24pub mod model;
25pub mod objective;
26pub mod solution;
27pub mod solver;
28pub mod status;
29pub mod var;
30
31// Re-export all submodules for easy access via `cnvx_core::*`
32pub use constraint::*;
33pub use expr::*;
34pub use model::*;
35pub use objective::*;
36pub use solution::*;
37pub use solver::*;
38pub use status::*;
39pub use var::*;