Travel-time lookups are pluggable via the TravelTimeProvider trait, which
returns an n×n adjacency matrix (TravelTimeMatrix). Implementations must
report TravelTimeError::EmptyInput when called with an empty slice.[^9] The
library ships with UnitTravelTimeProvider behind the test-support feature
to simplify integration testing.[^10]