Skip to content

Commit 28ad9c9

Browse files
committed
remove indexmap crate
1 parent be29571 commit 28ad9c9

3 files changed

Lines changed: 17 additions & 10 deletions

File tree

Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ log = "0.4"
2222
env_logger = "0.6.0"
2323
serde = { version = "1.0", features = ["derive"] }
2424
serde_json = { version = "1.0", features = ["preserve_order"] }
25-
indexmap = "1.0.2"
2625
array_tool = "~1.0.3"
2726

2827
[dev-dependencies]

src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,6 @@
125125
extern crate array_tool;
126126
extern crate core;
127127
extern crate env_logger;
128-
extern crate indexmap;
129128
#[macro_use]
130129
extern crate log;
131130
extern crate serde;

src/select/mod.rs

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ use std::collections::HashSet;
22
use std::fmt;
33

44
use array_tool::vec::{Intersect, Union};
5-
use indexmap::IndexMap;
65
use serde_json::{Number, Value};
76

87
use parser::parser::*;
@@ -1167,7 +1166,8 @@ impl SelectorMut {
11671166
origin: &Value,
11681167
target: &mut Vec<&Value>,
11691168
tokens: &mut Vec<String>,
1170-
visited: &mut IndexMap<*const Value, Vec<String>>,
1169+
visited: &mut HashSet<*const Value>,
1170+
visited_order: &mut Vec<Vec<String>>,
11711171
) -> bool {
11721172
trace!("{:?}, {:?}", target, tokens);
11731173

@@ -1177,7 +1177,9 @@ impl SelectorMut {
11771177

11781178
target.retain(|t| {
11791179
if std::ptr::eq(origin, *t) {
1180-
visited.insert(*t, tokens.to_vec());
1180+
if visited.insert(*t) {
1181+
visited_order.push(tokens.to_vec());
1182+
}
11811183
false
11821184
} else {
11831185
true
@@ -1188,7 +1190,7 @@ impl SelectorMut {
11881190
Value::Array(vec) => {
11891191
for (i, v) in vec.iter().enumerate() {
11901192
tokens.push(i.to_string());
1191-
if _walk(v, target, tokens, visited) {
1193+
if _walk(v, target, tokens, visited, visited_order) {
11921194
return true;
11931195
}
11941196
tokens.pop();
@@ -1197,7 +1199,7 @@ impl SelectorMut {
11971199
Value::Object(map) => {
11981200
for (k, v) in map {
11991201
tokens.push(k.clone());
1200-
if _walk(v, target, tokens, visited) {
1202+
if _walk(v, target, tokens, visited, visited_order) {
12011203
return true;
12021204
}
12031205
tokens.pop();
@@ -1209,14 +1211,21 @@ impl SelectorMut {
12091211
return false;
12101212
}
12111213

1212-
let mut visited = IndexMap::new();
1214+
let mut visited = HashSet::new();
1215+
let mut visited_order = Vec::new();
12131216

12141217
if let Some(origin) = &self.value {
12151218
let mut tokens = Vec::new();
1216-
_walk(origin, &mut result, &mut tokens, &mut visited);
1219+
_walk(
1220+
origin,
1221+
&mut result,
1222+
&mut tokens,
1223+
&mut visited,
1224+
&mut visited_order,
1225+
);
12171226
}
12181227

1219-
visited.iter().map(|(_, v)| v.to_vec()).collect()
1228+
visited_order
12201229
}
12211230

12221231
pub fn delete(&mut self) -> Result<&mut Self, JsonPathError> {

0 commit comments

Comments
 (0)