Using Actix-web v0.7.4
Error – thread ‘arbiter:6461f87e-20ed-4848-9feb-dbe68ab5ea7e:actor’ panicked at ‘index out of bounds: the len is 1 but the index is 1’, /checkout/src/libcore/slice/mod.rs:2079:10
How I corrected it
The loop was accessing an index which didn’t exist. I don’t really know how actix web works or even how Rust works.
pub fn match_with_params in router.rs in actix-web src was the culprit
So I changed the code to this
/// Are the given path and parameters a match against this resource? pub fn match_with_params(&self, req: &Request, plen: usize) -> Option<Params> { let path = &req.path()[plen..]; match self.tp { PatternType::Static(ref s) => if s != path { None } else { Some(Params::with_url(req.url())) }, PatternType::Dynamic(ref re, ref names, _) => { if let Some(captures) = re.captures(path) { let mut params = Params::with_url(req.url()); let mut idx = 0; let mut passed = false; for capture in captures.iter() { if let Some(ref m) = capture { if !passed { passed = true; continue; } if idx > names.len() - 1 { break; } params.add( names[idx].clone(), ParamItem::UrlSegment( (plen + m.start()) as u16, (plen + m.end()) as u16, ), ); idx += 1; } } params.set_tail(req.path().len() as u16); Some(params) } else { None } } PatternType::Prefix(ref s) => if !path.starts_with(s) { None } else { Some(Params::with_url(req.url())) }, } }