feat(core): add data types and Rng alias

Plain-data structs and the seeded Rng alias from spec §7. Each lives in
its own file under src/core/ with unit tests:

- Direction, Objective, ObjectiveSpace (with as_minimization negating
  only Maximize axes)
- Evaluation (is_feasible == constraint_violation <= 0.0)
- Candidate<D>, Population<D> (concrete, public fields, From<Vec<...>>)
- OptimizationResult<D>
- type Rng = rand::rngs::StdRng + rng_from_seed, so no public trait is
  generic over the RNG (spec §2.5)

All public types behind #[cfg_attr(feature = "serde", derive(...))] so
the optional feature wires up without changing the default surface.
This commit is contained in:
2026-05-04 19:18:01 -06:00
parent b827310822
commit f6f41eda35
8 changed files with 435 additions and 13 deletions
+4 -13
View File
@@ -1,14 +1,5 @@
pub fn add(left: u64, right: u64) -> u64 {
left + right
}
//! `heuropt` — a practical Rust toolkit for heuristic single-, multi-, and
//! many-objective optimization. See `docs/heuropt_tech_design_spec.md` for the
//! full design.
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn it_works() {
let result = add(2, 2);
assert_eq!(result, 4);
}
}
pub mod core;