Skip to content

Commit

Permalink
Get dynamic segment by name instead of iterator
Browse files Browse the repository at this point in the history
  • Loading branch information
fafhrd91 committed Apr 4, 2019
1 parent 5e8ae21 commit 629ed05
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 14 deletions.
4 changes: 4 additions & 0 deletions router/CHANGES.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changes

## [0.1.1] - 2019-04-03

* Get dynamic segment by name instead of iterator.

## [0.1.0] - 2019-03-09

* Initial release
9 changes: 5 additions & 4 deletions router/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
[package]
name = "actix-router"
version = "0.1.0"
version = "0.1.1"
authors = ["Nikolay Kim <fafhrd91@gmail.com>"]
description = "Path router"
keywords = ["actix"]
homepage = "https://actix.rs"
repository = "https://github.com/actix/actix-net.git"
documentation = "https://actix.rs/api/actix-net/stable/actix_router/"
documentation = "https://docs.rs/actix-router/"
license = "MIT/Apache-2.0"
exclude = [".gitignore", ".travis.yml", ".cargo/config", "appveyor.yml"]
edition = "2018"
workspace = "../"
workspace = ".."

[lib]
name = "actix_router"
Expand All @@ -23,7 +23,8 @@ default = ["http"]
bytes = "0.4"
regex = "1.0"
serde = "1.0.80"
string = "0.1.3"
string = "0.2.0"
log = "0.4"
http = { version="0.1.14", optional=true }

[dev-dependencies]
Expand Down
19 changes: 9 additions & 10 deletions router/src/resource.rs
Original file line number Diff line number Diff line change
Expand Up @@ -196,18 +196,17 @@ impl ResourceDef {
[PathItem::Static(""); MAX_DYNAMIC_SEGMENTS];

if let Some(captures) = re.captures(path.path()) {
let mut passed = false;

for capture in captures.iter() {
if let Some(ref m) = capture {
if !passed {
passed = true;
continue;
}

segments[idx] = PathItem::Segment(m.start() as u16, m.end() as u16);
for (no, name) in names.iter().enumerate() {
if let Some(m) = captures.name(&name) {
idx += 1;
pos = m.end();
segments[no] = PathItem::Segment(m.start() as u16, m.end() as u16);
} else {
log::error!(
"Dynamic path match but not all segments found: {}",
name
);
false;
}
}
} else {
Expand Down

0 comments on commit 629ed05

Please sign in to comment.