| //! # Core Domain | |
| //! | |
| //! Pure math, no I/O. The foundation of ARMS. | |
| //! | |
| //! This module contains the fundamental types and operations: | |
| //! - `Point` - A position in dimensional space | |
| //! - `Id` - Unique identifier for placed points | |
| //! - `Blob` - Raw payload data | |
| //! - `Proximity` - Trait for measuring relatedness | |
| //! - `Merge` - Trait for composing points | |
| //! | |
| //! ## Design Principles | |
| //! | |
| //! - All functions are pure (deterministic, no side effects) | |
| //! - No I/O operations | |
| //! - No external dependencies beyond std | |
| //! - Fully testable in isolation | |
| mod point; | |
| mod id; | |
| mod blob; | |
| pub mod proximity; | |
| pub mod merge; | |
| pub mod config; | |
| // Re-exports | |
| pub use point::Point; | |
| pub use id::Id; | |
| pub use blob::Blob; | |
| /// A point that has been placed in the space | |
| pub struct PlacedPoint { | |
| /// Unique identifier | |
| pub id: Id, | |
| /// Position in dimensional space | |
| pub point: Point, | |
| /// Attached payload | |
| pub blob: Blob, | |
| } | |
| impl PlacedPoint { | |
| /// Create a new placed point | |
| pub fn new(id: Id, point: Point, blob: Blob) -> Self { | |
| Self { id, point, blob } | |
| } | |
| } | |
| mod tests { | |
| use super::*; | |
| fn test_placed_point_creation() { | |
| let id = Id::now(); | |
| let point = Point::new(vec![1.0, 2.0, 3.0]); | |
| let blob = Blob::new(vec![1, 2, 3]); | |
| let placed = PlacedPoint::new(id, point.clone(), blob); | |
| assert_eq!(placed.point.dimensionality(), 3); | |
| assert_eq!(placed.blob.size(), 3); | |
| } | |
| } | |