{"record":{"id":"c721b247aeb6509d","repo":"a-b-street/abstreet","slug":"invalid","errorCode":null,"errorMessage":"{} invalid: {}","messagePattern":"(.+?) invalid: (.+?)","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"map_model/src/traversable.rs","lineNumber":57,"sourceCode":"pub fn pt(&self, map: &Map) -> Pt2D {\n    match map\n        .get_l(self.lane)\n        .lane_center_pts\n        .dist_along(self.dist_along)\n    {\n        Ok((pt, _)) => pt,\n        Err(err) => panic!(\"{} invalid: {}\", self, err),\n    }\n}","sourceCodeStart":39,"sourceCodeEnd":75,"githubUrl":"https://github.com/a-b-street/abstreet/blob/0964f29315820c91b171b585eb51e300164e9197/map_model/src/traversable.rs#L39-L75","documentation":"Position::pt looks up the point at dist_along along the lane's center polyline. This fires when the stored dist_along is out of bounds for the lane — the Position is stale or was constructed against a different map where the lane was longer. It is a validity guard: the {} in the message is the Position itself and {} is the underlying DistAlongPolyline error.","triggerScenarios":"Thrown at map_model/src/traversable.rs:57 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Recreate the Position against the current map so dist_along fits the lane length","Clamp or re-derive dist_along before calling pt, or use a fallible lookup instead","Trace where the stale Position came from (likely a deserialized path or a map that shrank the lane)"],"exampleFix":null,"handlingStrategy":"validation","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"}