rustsim-spaces 0.0.1

Space implementations (grid, continuous, graph, hybrid) for rustsim
Documentation
//! Space implementations for agent-based models.
//!
//! Each space defines a topology in which agents exist and provides:
//! - Position types
//! - Agent registration / deregistration
//! - Neighbor queries
//! - Random position generation
//!
//! | Space | Position type | Metric | Use case |
//! |-------|--------------|--------|----------|
//! | [`NothingSpace`](nothing::NothingSpace) | - | - | Non-spatial models |
//! | [`Grid2D`](grid::Grid2D) | `(usize, usize)` | Chebyshev | Cellular automata, Schelling |
//! | [`Grid2DSingle`](grid::Grid2DSingle) | `(usize, usize)` | Chebyshev | Single-occupancy grids |
//! | [`ContinuousSpace2D`](continuous::ContinuousSpace2D) | [`ContinuousPos`](continuous::ContinuousPos) | Euclidean | 2D flocking, particles |
//! | [`ContinuousSpace3D`](continuous3d::ContinuousSpace3D) | [`ContinuousPos3D`](continuous3d::ContinuousPos3D) | Euclidean | 3D physics |
//! | [`GraphSpace`](graph::GraphSpace) | `usize` (node index) | Hops (BFS) | Networks, social graphs |
//! | [`HybridSpace`](hybrid::HybridSpace) | [`HybridPos`](hybrid::HybridPos) | Hops + Euclidean | Buildings, multi-room environments |
//! | [`LinkSpace`](link::LinkSpace) | `(NodeId, NodeId)` | Link distance | Generic link-based networks |
//!
pub mod continuous;
pub mod continuous3d;
pub mod density;
pub mod graph;
pub mod grid;
pub mod hybrid;
pub mod link;
pub mod nothing;

/// Re-exports of all space types and their associated position/error types.
pub mod prelude {
    pub use crate::continuous::{
        ContinuousPos, ContinuousSpace2D, ContinuousSpaceConfigError, ContinuousSpaceError,
    };
    pub use crate::continuous3d::{
        ContinuousPos3D, ContinuousSpace3D, ContinuousSpace3DConfigError, ContinuousSpace3DError,
    };
    pub use crate::density::{
        BicycleFacility, CustomLosCriteria, DensityGrid, DensityGridError, DensityStatistics,
        LosCriteria, LosCriteriaConfigError, LosGrade, PedestrianQueuing, PedestrianStairway,
        PedestrianWalkway, TransitCapacity, VehicularFreeway, VehicularUnsignalized,
        VehicularUrbanStreet,
    };
    pub use crate::graph::{GraphPos, GraphSpace, GraphSpaceError, NeighborType};
    pub use crate::grid::{Grid2D, Grid2DSingle, GridError, GridPos2};
    pub use crate::hybrid::{
        HybridPos, HybridSpace, HybridSpaceError, ZoneExtent, ZoneExtentError, ZoneWalkmap,
        ZoneWalkmapError,
    };
    pub use crate::link::{LinkGeometry, LinkGeometryError, LinkId, LinkSpace, LinkSpaceError};
    pub use crate::nothing::NothingSpace;
}