blob: 5ba703d002473d2a90051a0c59c6b871fceef4ea [file] [log] [blame]
diff --git a/Cargo.toml b/Cargo.toml
index 8f6dcc2..a3067d0 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -21,7 +21,7 @@ keywords = ["C", "expression", "parser"]
license = "Apache-2.0/MIT"
repository = "https://github.com/jethrogb/rust-cexpr"
[dependencies.nom]
-version = "6"
+version = "7"
features = ["std"]
default-features = false
[dev-dependencies.clang-sys]
diff --git a/src/expr.rs b/src/expr.rs
index 5dce3c7..7f7e458 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -308,7 +308,7 @@ impl<'a> PRef<'a> {
pair(complete(one_of_punctuation(&["*", "/", "%"][..])), |i| {
self.unary(i)
}),
- acc,
+ move || acc.clone(),
|mut acc, (op, val): (&[u8], EvalResult)| {
match op[0] as char {
'*' => acc *= &val,
@@ -327,7 +327,7 @@ impl<'a> PRef<'a> {
pair(complete(one_of_punctuation(&["+", "-"][..])), |i| {
self.mul_div_rem(i)
}),
- acc,
+ move || acc.clone(),
|mut acc, (op, val): (&[u8], EvalResult)| {
match op[0] as char {
'+' => acc += &val,
@@ -345,7 +345,7 @@ impl<'a> PRef<'a> {
pair(complete(one_of_punctuation(&["<<", ">>"][..])), |i| {
self.add_sub(i)
}),
- acc,
+ move || acc.clone(),
|mut acc, (op, val): (&[u8], EvalResult)| {
match op {
b"<<" => acc <<= &val,
@@ -361,7 +361,7 @@ impl<'a> PRef<'a> {
let (input, acc) = self.shl_shr(input)?;
numeric(fold_many0(
preceded(complete(p("&")), |i| self.shl_shr(i)),
- acc,
+ move || acc.clone(),
|mut acc, val: EvalResult| {
acc &= &val;
acc
@@ -373,7 +373,7 @@ impl<'a> PRef<'a> {
let (input, acc) = self.and(input)?;
numeric(fold_many0(
preceded(complete(p("^")), |i| self.and(i)),
- acc,
+ move || acc.clone(),
|mut acc, val: EvalResult| {
acc ^= &val;
acc
@@ -385,7 +385,7 @@ impl<'a> PRef<'a> {
let (input, acc) = self.xor(input)?;
numeric(fold_many0(
preceded(complete(p("|")), |i| self.xor(i)),
- acc,
+ move || acc.clone(),
|mut acc, val: EvalResult| {
acc |= &val;
acc
diff --git a/src/literal.rs b/src/literal.rs
index b74699f..68e85c7 100644
--- a/src/literal.rs
+++ b/src/literal.rs
@@ -224,7 +224,7 @@ fn c_string(i: &[u8]) -> nom::IResult<&[u8], Vec<u8>> {
map(escaped_char, |c: CChar| c.into()),
map(is_not([b'\\', b'"']), |c: &[u8]| c.into()),
)),
- Vec::new(),
+ Vec::new,
|mut v: Vec<u8>, res: Vec<u8>| {
v.extend_from_slice(&res);
v