a-b-street/abstreet · error
not a turn
Error message
not a turn
What it means
Mirror of as_lane: this unwrapping helper on the Traversable enum fires when as_turn is called on a Traversable::Lane variant. The caller asserted the traversable is a turn but it holds a lane ID; maybe_turn exists for non-panicking callers.
Solutions
- Use maybe_turn() and handle the None case instead of as_turn
- Match on the Traversable enum explicitly at the call site
- Fix upstream logic so only turn traversables reach as_turn
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at map_model/src/traversable.rs:164 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of a-b-street/abstreet@0964f29315 (2026-09-13).
Data as JSON: /api/errors/16d064e3bb4b608e.
Report an issue: GitHub.
Appendix: source
Thrown at map_model/src/traversable.rs:164
pub fn as_turn(&self) -> TurnID {
match *self {
Traversable::Turn(id) => id,
Traversable::Lane(_) => panic!("not a turn"),
}
}
pub fn maybe_turn(&self) -> Option<TurnID> {
match *self {
Traversable::Turn(id) => Some(id),
Traversable::Lane(_) => None,
}
}View on GitHub (pinned to 0964f29315)