{"record":{"id":"6ff8cd4a7ce4acf9","repo":"a-b-street/abstreet","slug":"no-turn-from-to-at","errorCode":null,"errorMessage":"No turn from {} ({}) to {} ({}) at {}","messagePattern":"No turn from (.+?) \\((.+?)\\) to (.+?) \\((.+?)\\) at (.+?)","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"map_model/src/pathfind/walking.rs","lineNumber":461,"sourceCode":"let i = if r1_endpt {\n    r1.dst_i(map)\n} else {\n    r1.src_i(map)\n};\n// Could assert the intersection matches (r2, r2_endpt).\nif let Some(t) =\n    map.get_turn_between(r1.must_get_sidewalk(map), r2.must_get_sidewalk(map), i)\n{\n    steps.push(PathStepV2::Movement(t.id.to_movement(map)));\n} else if let Some(t) =\n    map.get_turn_between(r2.must_get_sidewalk(map), r1.must_get_sidewalk(map), i)\n{\n    steps.push(PathStepV2::ContraflowMovement(t.id.to_movement(map)));\n} else {\n    println!(\"walking_path_to_steps has a weird path:\");\n    for s in &path {\n        println!(\"- {:?}\", s);\n    }\n    panic!(\n        \"No turn from {} ({}) to {} ({}) at {}\",\n        r1,\n        r1.must_get_sidewalk(map),\n        r2,\n        r2.must_get_sidewalk(map),\n        i\n    );\n}","sourceCodeStart":443,"sourceCodeEnd":479,"githubUrl":"https://github.com/a-b-street/abstreet/blob/0964f29315820c91b171b585eb51e300164e9197/map_model/src/pathfind/walking.rs#L443-L479","documentation":"walking_path_to_steps converts a sequence of sidewalk-endpoint nodes back into concrete PathSteps. For each consecutive pair of roads it looks up the turn between their sidewalks at the shared intersection, in both directions (movement and contraflow). When neither direction yields a turn, the path produced by the input graph is inconsistent with the map's actual turn geometry — a bug in path construction, not bad user input, and the full path is printed before panicking to aid debugging.","triggerScenarios":"Thrown at map_model/src/pathfind/walking.rs:461 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix the input graph builder so it only connects sidewalk endpoints that share a real turn at the intersection","Inspect the printed 'weird path' to find why the graph edge has no corresponding map turn","Regenerate or repair the map's turn geometry if turns are missing between adjacent sidewalks"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0964f29315820c91b171b585eb51e300164e9197","analyzedAt":"2026-09-13T18:02:03.421Z","contentChangedAt":"2026-09-13T18:02:03.421Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}