The wildside-core crate defines the types that form the API surface for
consumers.
Points of interest
PointOfInterest represents an attraction worth visiting and carries a unique
identifier, WGS84 coordinate, and a free-form map of tags. Helper constructors
new and with_empty_tags simplify creation, and the type implements
RTreeObject so it can be indexed directly. Spatial lookup is exposed through
SpatialIndex, which supports iteration, bounding-box queries, and index
construction via the build_spatial_index helper.[^1]
Themes and interest profiles
Theme enumerates supported interest categories and provides string
conversions for serialization and parsing. InterestProfile stores per-theme
weights in the 0.0..=1.0 range and offers validated setters (set_weight,
try_set_weight) and chaining via with_weight. Invalid weights raise
WeightError (OutOfRange or NonFinite).[^2][^3]
Routes
Route captures an ordered list of points of interest plus a caller-supplied
Duration. Use Route::new to build routes returned from solvers and
Route::empty for initialization. The route does not infer travel time;
callers must provide the aggregate duration explicitly.[^4]