[INFO] fetching crate velocity_template 0.0.2...
[INFO] testing velocity_template-0.0.2 against 1.90.0 for beta-1.91-3
[INFO] extracting crate velocity_template 0.0.2 into /workspace/builds/worker-3-tc1/source
[INFO] started tweaking crates.io crate velocity_template 0.0.2
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate velocity_template 0.0.2
[INFO] tweaked toml for crates.io crate velocity_template 0.0.2 written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate velocity_template 0.0.2 on toolchain 1.90.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.90.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.90.0" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 82 packages to latest compatible versions
[INFO] [stderr]       Adding md5 v0.7.0 (available: v0.8.0)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.90.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded env_logger v0.11.8
[INFO] [stderr]   Downloaded portable-atomic v1.11.1
[INFO] [stderr]   Downloaded env_filter v0.1.3
[INFO] [stderr]   Downloaded md5 v0.7.0
[INFO] [stderr]   Downloaded portable-atomic-util v0.2.4
[INFO] [stderr]   Downloaded jiff-static v0.2.15
[INFO] [stderr]   Downloaded evalexpr v12.0.2
[INFO] [stderr]   Downloaded jiff v0.2.15
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 7e809c06a86618d0b6ddad42da234f0f6c8f0f08e761a92f5ab1e5e68c8b0e78
[INFO] running `Command { std: "docker" "start" "-a" "7e809c06a86618d0b6ddad42da234f0f6c8f0f08e761a92f5ab1e5e68c8b0e78", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7e809c06a86618d0b6ddad42da234f0f6c8f0f08e761a92f5ab1e5e68c8b0e78", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7e809c06a86618d0b6ddad42da234f0f6c8f0f08e761a92f5ab1e5e68c8b0e78", kill_on_drop: false }`
[INFO] [stdout] 7e809c06a86618d0b6ddad42da234f0f6c8f0f08e761a92f5ab1e5e68c8b0e78
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5fea0d2a51f18372adf98b817b5ff4e6ba02ca6c653e9d1a1add3b1fee1cd5b2
[INFO] running `Command { std: "docker" "start" "-a" "5fea0d2a51f18372adf98b817b5ff4e6ba02ca6c653e9d1a1add3b1fee1cd5b2", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.176
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]    Compiling regex-syntax v0.8.6
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]    Compiling anstyle v1.0.13
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.1
[INFO] [stderr]    Compiling colorchoice v1.0.4
[INFO] [stderr]    Compiling anstyle-query v1.1.4
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling anstyle-parse v0.2.7
[INFO] [stderr]    Compiling ryu v1.0.20
[INFO] [stderr]    Compiling itoa v1.0.15
[INFO] [stderr]    Compiling jiff v0.2.15
[INFO] [stderr]    Compiling md5 v0.7.0
[INFO] [stderr]    Compiling evalexpr v12.0.2
[INFO] [stderr]    Compiling anstream v0.6.20
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]    Compiling mio v1.0.4
[INFO] [stderr]    Compiling signal-hook-registry v1.4.6
[INFO] [stderr]    Compiling parking_lot v0.12.4
[INFO] [stderr]    Compiling socket2 v0.6.0
[INFO] [stderr]    Compiling regex-automata v0.4.11
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio v1.47.1
[INFO] [stderr]    Compiling regex v1.11.3
[INFO] [stderr]    Compiling env_filter v0.1.3
[INFO] [stderr]    Compiling env_logger v0.11.8
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling velocity_template v0.0.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::ops::Add`
[INFO] [stdout]  --> src/lib.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::ops::Add;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::expression::expr_eval`
[INFO] [stdout]  --> src/expression/expression.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::expression::expr_eval;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::log`
[INFO] [stdout]  --> src/token/token_parse.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use log::log;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Number`
[INFO] [stdout]  --> src/token/token_parse.rs:7:18
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde_json::{Number, Value};
[INFO] [stdout]   |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value::String as JsonString`
[INFO] [stdout]  --> src/token/token_parse.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde_json::Value::String as JsonString;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/parse/foreach_parse.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Deserializer`
[INFO] [stdout]  --> src/parse/foreach_parse.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde::Deserializer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/expression/expr_eval.rs:61:21
[INFO] [stdout]    |
[INFO] [stdout] 61 |                 Err(e) => Err("Result is not a boolean".to_string()),
[INFO] [stdout]    |                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `first_end`
[INFO] [stdout]    --> src/token/token_parse.rs:347:13
[INFO] [stdout]     |
[INFO] [stdout] 347 |         let first_end = position.first_end;
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_first_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_start`
[INFO] [stdout]    --> src/token/token_parse.rs:348:13
[INFO] [stdout]     |
[INFO] [stdout] 348 |         let last_start = position.last_start;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `first_name`
[INFO] [stdout]    --> src/token/token_parse.rs:350:13
[INFO] [stdout]     |
[INFO] [stdout] 350 |         let first_name = &position.first_name;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_first_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_name`
[INFO] [stdout]    --> src/token/token_parse.rs:351:13
[INFO] [stdout]     |
[INFO] [stdout] 351 |         let last_name = &position.last_name;
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/token/token_parse.rs:239:9
[INFO] [stdout]     |
[INFO] [stdout] 239 |     let mut captures: Vec<(usize, &str)> = TAGS_PATTERN.find_iter(&template)
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/token/token_parse.rs:316:17
[INFO] [stdout]     |
[INFO] [stdout] 316 |             let mut last_start = first_start+find_char_index(last_text,"\r\n").unwrap();
[INFO] [stdout]     |                 ----^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `expression_start` is never read
[INFO] [stdout]    --> src/token/token_parse.rs:445:21
[INFO] [stdout]     |
[INFO] [stdout] 445 |             let mut expression_start = 0;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `expression_end` is never read
[INFO] [stdout]    --> src/token/token_parse.rs:446:21
[INFO] [stdout]     |
[INFO] [stdout] 446 |             let mut expression_end = 0;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_name`
[INFO] [stdout]    --> src/token/token_parse.rs:501:9
[INFO] [stdout]     |
[INFO] [stdout] 501 |     let last_name = &position.last_name;
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_end`
[INFO] [stdout]    --> src/token/token_parse.rs:505:9
[INFO] [stdout]     |
[INFO] [stdout] 505 |     let last_end = position.last_end;
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `expression_start` is never read
[INFO] [stdout]    --> src/token/token_parse.rs:533:17
[INFO] [stdout]     |
[INFO] [stdout] 533 |         let mut expression_start = 0;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `expression_end` is never read
[INFO] [stdout]    --> src/token/token_parse.rs:534:17
[INFO] [stdout]     |
[INFO] [stdout] 534 |         let mut expression_end = 0;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]   --> src/parse/set_parse.rs:65:23
[INFO] [stdout]    |
[INFO] [stdout] 65 |             } else if let Ok(string) = v.parse::<String>(){
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]    = help: consider replacing the `if let` with a `let`
[INFO] [stdout]    = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/parse/set_parse.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 |         let mut v = variable_parse::normalize_variable_syntax(value.as_str(),context);
[INFO] [stdout]    |             ----^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]   --> src/parse/if_parse.rs:15:16
[INFO] [stdout]    |
[INFO] [stdout] 15 |             if let IfBranch::If{condition,children,..} = branch {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]    = help: consider replacing the `if let` with a `let`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `first` is never read
[INFO] [stdout]    --> src/parse/foreach_parse.rs:113:25
[INFO] [stdout]     |
[INFO] [stdout] 113 |                 let mut first = true;
[INFO] [stdout]     |                         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/lib.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 55 |     let mut context_result = object_to_hashmap(obj);
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `expression::expression::Token` is more private than the item `expression::expression::parse_position`
[INFO] [stdout]   --> src/expression/expression.rs:51:1
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn parse_position(input:&str) ->Result<Vec<Token>,String> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `expression::expression::parse_position` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `expression::expression::Token` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/expression/expression.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | enum Token {
[INFO] [stdout]    | ^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `expression::expression::Token` is more private than the item `eval_tokens`
[INFO] [stdout]    --> src/expression/expression.rs:137:1
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub fn eval_tokens(tokens:Vec<Token>) -> Result<bool,String> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `eval_tokens` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `expression::expression::Token` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/expression/expression.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | enum Token {
[INFO] [stdout]     | ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 49.89s
[INFO] running `Command { std: "docker" "inspect" "5fea0d2a51f18372adf98b817b5ff4e6ba02ca6c653e9d1a1add3b1fee1cd5b2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5fea0d2a51f18372adf98b817b5ff4e6ba02ca6c653e9d1a1add3b1fee1cd5b2", kill_on_drop: false }`
[INFO] [stdout] 5fea0d2a51f18372adf98b817b5ff4e6ba02ca6c653e9d1a1add3b1fee1cd5b2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ad884e6aca9d47b5f2b98d017bdb84c222a5372c24c746b242c61503eaa64084
[INFO] running `Command { std: "docker" "start" "-a" "ad884e6aca9d47b5f2b98d017bdb84c222a5372c24c746b242c61503eaa64084", kill_on_drop: false }`
[INFO] [stdout] warning: unused import: `std::ops::Add`
[INFO] [stdout]  --> src/lib.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::ops::Add;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::expression::expr_eval`
[INFO] [stdout]  --> src/expression/expression.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::expression::expr_eval;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::log`
[INFO] [stdout]  --> src/token/token_parse.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use log::log;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Number`
[INFO] [stdout]  --> src/token/token_parse.rs:7:18
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde_json::{Number, Value};
[INFO] [stdout]   |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value::String as JsonString`
[INFO] [stdout]  --> src/token/token_parse.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde_json::Value::String as JsonString;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/parse/foreach_parse.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Deserializer`
[INFO] [stdout]  --> src/parse/foreach_parse.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde::Deserializer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/expression/expr_eval.rs:61:21
[INFO] [stdout]    |
[INFO] [stdout] 61 |                 Err(e) => Err("Result is not a boolean".to_string()),
[INFO] [stdout]    |                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `first_end`
[INFO] [stdout]    --> src/token/token_parse.rs:347:13
[INFO] [stdout]     |
[INFO] [stdout] 347 |         let first_end = position.first_end;
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_first_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_start`
[INFO] [stdout]    --> src/token/token_parse.rs:348:13
[INFO] [stdout]     |
[INFO] [stdout] 348 |         let last_start = position.last_start;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `first_name`
[INFO] [stdout]    --> src/token/token_parse.rs:350:13
[INFO] [stdout]     |
[INFO] [stdout] 350 |         let first_name = &position.first_name;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_first_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_name`
[INFO] [stdout]    --> src/token/token_parse.rs:351:13
[INFO] [stdout]     |
[INFO] [stdout] 351 |         let last_name = &position.last_name;
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling velocity_template v0.0.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/token/token_parse.rs:239:9
[INFO] [stdout]     |
[INFO] [stdout] 239 |     let mut captures: Vec<(usize, &str)> = TAGS_PATTERN.find_iter(&template)
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/token/token_parse.rs:316:17
[INFO] [stdout]     |
[INFO] [stdout] 316 |             let mut last_start = first_start+find_char_index(last_text,"\r\n").unwrap();
[INFO] [stdout]     |                 ----^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `expression_start` is never read
[INFO] [stdout]    --> src/token/token_parse.rs:445:21
[INFO] [stdout]     |
[INFO] [stdout] 445 |             let mut expression_start = 0;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `expression_end` is never read
[INFO] [stdout]    --> src/token/token_parse.rs:446:21
[INFO] [stdout]     |
[INFO] [stdout] 446 |             let mut expression_end = 0;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_name`
[INFO] [stdout]    --> src/token/token_parse.rs:501:9
[INFO] [stdout]     |
[INFO] [stdout] 501 |     let last_name = &position.last_name;
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_end`
[INFO] [stdout]    --> src/token/token_parse.rs:505:9
[INFO] [stdout]     |
[INFO] [stdout] 505 |     let last_end = position.last_end;
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `expression_start` is never read
[INFO] [stdout]    --> src/token/token_parse.rs:533:17
[INFO] [stdout]     |
[INFO] [stdout] 533 |         let mut expression_start = 0;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `expression_end` is never read
[INFO] [stdout]    --> src/token/token_parse.rs:534:17
[INFO] [stdout]     |
[INFO] [stdout] 534 |         let mut expression_end = 0;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]   --> src/parse/set_parse.rs:65:23
[INFO] [stdout]    |
[INFO] [stdout] 65 |             } else if let Ok(string) = v.parse::<String>(){
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]    = help: consider replacing the `if let` with a `let`
[INFO] [stdout]    = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/parse/set_parse.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 |         let mut v = variable_parse::normalize_variable_syntax(value.as_str(),context);
[INFO] [stdout]    |             ----^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]   --> src/parse/if_parse.rs:15:16
[INFO] [stdout]    |
[INFO] [stdout] 15 |             if let IfBranch::If{condition,children,..} = branch {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]    = help: consider replacing the `if let` with a `let`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `first` is never read
[INFO] [stdout]    --> src/parse/foreach_parse.rs:113:25
[INFO] [stdout]     |
[INFO] [stdout] 113 |                 let mut first = true;
[INFO] [stdout]     |                         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/lib.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 55 |     let mut context_result = object_to_hashmap(obj);
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `expression::expression::Token` is more private than the item `expression::expression::parse_position`
[INFO] [stdout]   --> src/expression/expression.rs:51:1
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn parse_position(input:&str) ->Result<Vec<Token>,String> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `expression::expression::parse_position` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `expression::expression::Token` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/expression/expression.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | enum Token {
[INFO] [stdout]    | ^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `expression::expression::Token` is more private than the item `eval_tokens`
[INFO] [stdout]    --> src/expression/expression.rs:137:1
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub fn eval_tokens(tokens:Vec<Token>) -> Result<bool,String> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `eval_tokens` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `expression::expression::Token` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/expression/expression.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | enum Token {
[INFO] [stdout]     | ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Add`
[INFO] [stdout]  --> src/lib.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::ops::Add;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::expression::expr_eval`
[INFO] [stdout]  --> src/expression/expression.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::expression::expr_eval;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::log`
[INFO] [stdout]  --> src/token/token_parse.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use log::log;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Number`
[INFO] [stdout]  --> src/token/token_parse.rs:7:18
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde_json::{Number, Value};
[INFO] [stdout]   |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value::String as JsonString`
[INFO] [stdout]  --> src/token/token_parse.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde_json::Value::String as JsonString;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/parse/foreach_parse.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Deserializer`
[INFO] [stdout]  --> src/parse/foreach_parse.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde::Deserializer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regex::Regex`
[INFO] [stdout]  --> tests/test.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use regex::Regex;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `velocity_template::token::token_parse::Tokenizer`
[INFO] [stdout]  --> tests/parse_token_test.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use velocity_template::token::token_parse::Tokenizer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regex::Regex`
[INFO] [stdout]  --> tests/test.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use regex::Regex;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `render_from_object`
[INFO] [stdout]  --> tests/set/set_test.rs:1:52
[INFO] [stdout]   |
[INFO] [stdout] 1 | use velocity_template::{read_file, render_default, render_from_object};
[INFO] [stdout]   |                                                    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `crate::log_config`
[INFO] [stdout]  --> tests/parse_token_test.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::log_config;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^ no `log_config` in the root
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `velocity_template::token::token_parse::Tokenizer`
[INFO] [stdout]  --> tests/parse_token_test.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use velocity_template::token::token_parse::Tokenizer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/expression/expr_eval.rs:61:21
[INFO] [stdout]    |
[INFO] [stdout] 61 |                 Err(e) => Err("Result is not a boolean".to_string()),
[INFO] [stdout]    |                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0432`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `velocity_template` (test "parse_token_test") due to 1 previous error; 1 warning emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> tests/parse_token_test.rs:98:9
[INFO] [stdout]    |
[INFO] [stdout] 98 |     for i in 0..2000{
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> tests/parse_token_test.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |     for x in 0..1000  {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user`
[INFO] [stdout]   --> tests/foreach/foreach_test.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |     let user = User{
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> tests/foreach/foreach_test.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 52 |     for x in 0..2  {
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `first_end`
[INFO] [stdout]    --> src/token/token_parse.rs:347:13
[INFO] [stdout]     |
[INFO] [stdout] 347 |         let first_end = position.first_end;
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_first_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_start`
[INFO] [stdout]    --> src/token/token_parse.rs:348:13
[INFO] [stdout]     |
[INFO] [stdout] 348 |         let last_start = position.last_start;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `first_name`
[INFO] [stdout]    --> src/token/token_parse.rs:350:13
[INFO] [stdout]     |
[INFO] [stdout] 350 |         let first_name = &position.first_name;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_first_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_name`
[INFO] [stdout]    --> src/token/token_parse.rs:351:13
[INFO] [stdout]     |
[INFO] [stdout] 351 |         let last_name = &position.last_name;
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/token/token_parse.rs:239:9
[INFO] [stdout]     |
[INFO] [stdout] 239 |     let mut captures: Vec<(usize, &str)> = TAGS_PATTERN.find_iter(&template)
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/token/token_parse.rs:316:17
[INFO] [stdout]     |
[INFO] [stdout] 316 |             let mut last_start = first_start+find_char_index(last_text,"\r\n").unwrap();
[INFO] [stdout]     |                 ----^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `expression_start` is never read
[INFO] [stdout]    --> src/token/token_parse.rs:445:21
[INFO] [stdout]     |
[INFO] [stdout] 445 |             let mut expression_start = 0;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `expression_end` is never read
[INFO] [stdout]    --> src/token/token_parse.rs:446:21
[INFO] [stdout]     |
[INFO] [stdout] 446 |             let mut expression_end = 0;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_name`
[INFO] [stdout]    --> src/token/token_parse.rs:501:9
[INFO] [stdout]     |
[INFO] [stdout] 501 |     let last_name = &position.last_name;
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_end`
[INFO] [stdout]    --> src/token/token_parse.rs:505:9
[INFO] [stdout]     |
[INFO] [stdout] 505 |     let last_end = position.last_end;
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `expression_start` is never read
[INFO] [stdout]    --> src/token/token_parse.rs:533:17
[INFO] [stdout]     |
[INFO] [stdout] 533 |         let mut expression_start = 0;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `expression_end` is never read
[INFO] [stdout]    --> src/token/token_parse.rs:534:17
[INFO] [stdout]     |
[INFO] [stdout] 534 |         let mut expression_end = 0;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]   --> src/parse/set_parse.rs:65:23
[INFO] [stdout]    |
[INFO] [stdout] 65 |             } else if let Ok(string) = v.parse::<String>(){
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]    = help: consider replacing the `if let` with a `let`
[INFO] [stdout]    = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/parse/set_parse.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 |         let mut v = variable_parse::normalize_variable_syntax(value.as_str(),context);
[INFO] [stdout]    |             ----^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]   --> src/parse/if_parse.rs:15:16
[INFO] [stdout]    |
[INFO] [stdout] 15 |             if let IfBranch::If{condition,children,..} = branch {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]    = help: consider replacing the `if let` with a `let`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `first` is never read
[INFO] [stdout]    --> src/parse/foreach_parse.rs:113:25
[INFO] [stdout]     |
[INFO] [stdout] 113 |                 let mut first = true;
[INFO] [stdout]     |                         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/lib.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 55 |     let mut context_result = object_to_hashmap(obj);
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `expression::expression::Token` is more private than the item `expression::expression::parse_position`
[INFO] [stdout]   --> src/expression/expression.rs:51:1
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn parse_position(input:&str) ->Result<Vec<Token>,String> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `expression::expression::parse_position` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `expression::expression::Token` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/expression/expression.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | enum Token {
[INFO] [stdout]    | ^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `expression::expression::Token` is more private than the item `expression::expression::eval_tokens`
[INFO] [stdout]    --> src/expression/expression.rs:137:1
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub fn eval_tokens(tokens:Vec<Token>) -> Result<bool,String> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `expression::expression::eval_tokens` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `expression::expression::Token` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/expression/expression.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | enum Token {
[INFO] [stdout]     | ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> tests/foreach/foreach_test.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 114 |     for i in 0..1000{
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> tests/set/set_test.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |     for x in 0..1  {
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `remove_velocity_comments` is never used
[INFO] [stdout]   --> tests/comment/comment_test.rs:98:4
[INFO] [stdout]    |
[INFO] [stdout] 98 | fn remove_velocity_comments(template: &str) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "ad884e6aca9d47b5f2b98d017bdb84c222a5372c24c746b242c61503eaa64084", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ad884e6aca9d47b5f2b98d017bdb84c222a5372c24c746b242c61503eaa64084", kill_on_drop: false }`
[INFO] [stdout] ad884e6aca9d47b5f2b98d017bdb84c222a5372c24c746b242c61503eaa64084
