mirror of https://github.com/fafhrd91/actix-net
remove usage of array::IntoIter
This commit is contained in:
parent
7b365dc657
commit
50a3013819
|
@ -1,4 +1,3 @@
|
||||||
use std::array::IntoIter;
|
|
||||||
use std::cmp::min;
|
use std::cmp::min;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::hash::{Hash, Hasher};
|
use std::hash::{Hash, Hasher};
|
||||||
|
@ -275,14 +274,15 @@ impl ResourceDef {
|
||||||
PatternType::Dynamic(ref re, ref names, len) => {
|
PatternType::Dynamic(ref re, ref names, len) => {
|
||||||
let mut idx = 0;
|
let mut idx = 0;
|
||||||
let mut pos = 0;
|
let mut pos = 0;
|
||||||
let mut segments: [PathItem; MAX_DYNAMIC_SEGMENTS] = Default::default();
|
let mut segments: [Option<PathItem>; MAX_DYNAMIC_SEGMENTS] = Default::default();
|
||||||
|
|
||||||
if let Some(captures) = re.captures(path.path()) {
|
if let Some(captures) = re.captures(path.path()) {
|
||||||
for (no, name) in names.iter().enumerate() {
|
for (no, name) in names.iter().enumerate() {
|
||||||
if let Some(m) = captures.name(&name) {
|
if let Some(m) = captures.name(&name) {
|
||||||
idx += 1;
|
idx += 1;
|
||||||
pos = m.end();
|
pos = m.end();
|
||||||
segments[no] = PathItem::Segment(m.start() as u16, m.end() as u16);
|
segments[no] =
|
||||||
|
Some(PathItem::Segment(m.start() as u16, m.end() as u16));
|
||||||
} else {
|
} else {
|
||||||
log::error!(
|
log::error!(
|
||||||
"Dynamic path match but not all segments found: {}",
|
"Dynamic path match but not all segments found: {}",
|
||||||
|
@ -294,11 +294,12 @@ impl ResourceDef {
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
for (idx, segment) in IntoIter::new(segments)
|
for (idx, segment) in segments
|
||||||
|
.iter_mut()
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.take_while(|(i, _)| *i != idx)
|
.take_while(|(i, _)| *i != idx)
|
||||||
{
|
{
|
||||||
path.add(names[idx], segment);
|
path.add(names[idx], segment.take().unwrap());
|
||||||
}
|
}
|
||||||
path.skip((pos + len) as u16);
|
path.skip((pos + len) as u16);
|
||||||
true
|
true
|
||||||
|
@ -308,7 +309,8 @@ impl ResourceDef {
|
||||||
let (ref pattern, ref names, len) = params[idx];
|
let (ref pattern, ref names, len) = params[idx];
|
||||||
let mut idx = 0;
|
let mut idx = 0;
|
||||||
let mut pos = 0;
|
let mut pos = 0;
|
||||||
let mut segments: [PathItem; MAX_DYNAMIC_SEGMENTS] = Default::default();
|
let mut segments: [Option<PathItem>; MAX_DYNAMIC_SEGMENTS] =
|
||||||
|
Default::default();
|
||||||
|
|
||||||
if let Some(captures) = pattern.captures(path.path()) {
|
if let Some(captures) = pattern.captures(path.path()) {
|
||||||
for (no, name) in names.iter().enumerate() {
|
for (no, name) in names.iter().enumerate() {
|
||||||
|
@ -316,7 +318,7 @@ impl ResourceDef {
|
||||||
idx += 1;
|
idx += 1;
|
||||||
pos = m.end();
|
pos = m.end();
|
||||||
segments[no] =
|
segments[no] =
|
||||||
PathItem::Segment(m.start() as u16, m.end() as u16);
|
Some(PathItem::Segment(m.start() as u16, m.end() as u16));
|
||||||
} else {
|
} else {
|
||||||
log::error!(
|
log::error!(
|
||||||
"Dynamic path match but not all segments found: {}",
|
"Dynamic path match but not all segments found: {}",
|
||||||
|
@ -328,11 +330,12 @@ impl ResourceDef {
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
for (idx, segment) in IntoIter::new(segments)
|
for (idx, segment) in segments
|
||||||
|
.iter_mut()
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.take_while(|(i, _)| *i != idx)
|
.take_while(|(i, _)| *i != idx)
|
||||||
{
|
{
|
||||||
path.add(names[idx], segment);
|
path.add(names[idx], segment.take().unwrap());
|
||||||
}
|
}
|
||||||
path.skip((pos + len) as u16);
|
path.skip((pos + len) as u16);
|
||||||
true
|
true
|
||||||
|
@ -392,14 +395,15 @@ impl ResourceDef {
|
||||||
PatternType::Dynamic(ref re, ref names, len) => {
|
PatternType::Dynamic(ref re, ref names, len) => {
|
||||||
let mut idx = 0;
|
let mut idx = 0;
|
||||||
let mut pos = 0;
|
let mut pos = 0;
|
||||||
let mut segments: [PathItem; MAX_DYNAMIC_SEGMENTS] = Default::default();
|
let mut segments: [Option<PathItem>; MAX_DYNAMIC_SEGMENTS] = Default::default();
|
||||||
|
|
||||||
if let Some(captures) = re.captures(res.resource_path().path()) {
|
if let Some(captures) = re.captures(res.resource_path().path()) {
|
||||||
for (no, name) in names.iter().enumerate() {
|
for (no, name) in names.iter().enumerate() {
|
||||||
if let Some(m) = captures.name(&name) {
|
if let Some(m) = captures.name(&name) {
|
||||||
idx += 1;
|
idx += 1;
|
||||||
pos = m.end();
|
pos = m.end();
|
||||||
segments[no] = PathItem::Segment(m.start() as u16, m.end() as u16);
|
segments[no] =
|
||||||
|
Some(PathItem::Segment(m.start() as u16, m.end() as u16));
|
||||||
} else {
|
} else {
|
||||||
log::error!(
|
log::error!(
|
||||||
"Dynamic path match but not all segments found: {}",
|
"Dynamic path match but not all segments found: {}",
|
||||||
|
@ -417,11 +421,12 @@ impl ResourceDef {
|
||||||
}
|
}
|
||||||
|
|
||||||
let path = res.resource_path();
|
let path = res.resource_path();
|
||||||
for (idx, segment) in IntoIter::new(segments)
|
for (idx, segment) in segments
|
||||||
|
.iter_mut()
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.take_while(|(i, _)| *i != idx)
|
.take_while(|(i, _)| *i != idx)
|
||||||
{
|
{
|
||||||
path.add(names[idx], segment);
|
path.add(names[idx], segment.take().unwrap());
|
||||||
}
|
}
|
||||||
path.skip((pos + len) as u16);
|
path.skip((pos + len) as u16);
|
||||||
true
|
true
|
||||||
|
@ -432,7 +437,8 @@ impl ResourceDef {
|
||||||
let (ref pattern, ref names, len) = params[idx];
|
let (ref pattern, ref names, len) = params[idx];
|
||||||
let mut idx = 0;
|
let mut idx = 0;
|
||||||
let mut pos = 0;
|
let mut pos = 0;
|
||||||
let mut segments: [PathItem; MAX_DYNAMIC_SEGMENTS] = Default::default();
|
let mut segments: [Option<PathItem>; MAX_DYNAMIC_SEGMENTS] =
|
||||||
|
Default::default();
|
||||||
|
|
||||||
if let Some(captures) = pattern.captures(path) {
|
if let Some(captures) = pattern.captures(path) {
|
||||||
for (no, name) in names.iter().enumerate() {
|
for (no, name) in names.iter().enumerate() {
|
||||||
|
@ -440,7 +446,7 @@ impl ResourceDef {
|
||||||
idx += 1;
|
idx += 1;
|
||||||
pos = m.end();
|
pos = m.end();
|
||||||
segments[no] =
|
segments[no] =
|
||||||
PathItem::Segment(m.start() as u16, m.end() as u16);
|
Some(PathItem::Segment(m.start() as u16, m.end() as u16));
|
||||||
} else {
|
} else {
|
||||||
log::error!(
|
log::error!(
|
||||||
"Dynamic path match but not all segments found: {}",
|
"Dynamic path match but not all segments found: {}",
|
||||||
|
@ -458,11 +464,12 @@ impl ResourceDef {
|
||||||
}
|
}
|
||||||
|
|
||||||
let path = res.resource_path();
|
let path = res.resource_path();
|
||||||
for (idx, segment) in IntoIter::new(segments)
|
for (idx, segment) in segments
|
||||||
|
.iter_mut()
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.take_while(|(i, _)| *i != idx)
|
.take_while(|(i, _)| *i != idx)
|
||||||
{
|
{
|
||||||
path.add(names[idx], segment);
|
path.add(names[idx], segment.take().unwrap());
|
||||||
}
|
}
|
||||||
path.skip((pos + len) as u16);
|
path.skip((pos + len) as u16);
|
||||||
true
|
true
|
||||||
|
|
Loading…
Reference in New Issue