[INFO] cloning repository https://github.com/tawashichan/type_inference_sample
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/tawashichan/type_inference_sample" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftawashichan%2Ftype_inference_sample", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftawashichan%2Ftype_inference_sample'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f21fbdd75c702bc74c35ac2819fb139de122bbb0
[INFO] checking tawashichan/type_inference_sample against try#54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47 for pr-153041
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftawashichan%2Ftype_inference_sample" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/tawashichan/type_inference_sample
[INFO] finished tweaking git repo https://github.com/tawashichan/type_inference_sample
[INFO] tweaked toml for git repo https://github.com/tawashichan/type_inference_sample written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/tawashichan/type_inference_sample on toolchain 54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/tawashichan/type_inference_sample already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[ERROR] error running command: no output for 300 seconds
[INFO] checking tawashichan/type_inference_sample against try#54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47 for pr-153041
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftawashichan%2Ftype_inference_sample" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/tawashichan/type_inference_sample
[INFO] finished tweaking git repo https://github.com/tawashichan/type_inference_sample
[INFO] tweaked toml for git repo https://github.com/tawashichan/type_inference_sample written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/tawashichan/type_inference_sample on toolchain 54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/tawashichan/type_inference_sample already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded nanoid v0.1.3
[INFO] [stderr]   Downloaded libc v0.2.60
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] e4b8e6bf8ab2e304b1d3ff7cd1ba0d93c099320a1d371fd17b8ccbaa8be236a3
[INFO] running `Command { std: "docker" "start" "-a" "e4b8e6bf8ab2e304b1d3ff7cd1ba0d93c099320a1d371fd17b8ccbaa8be236a3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e4b8e6bf8ab2e304b1d3ff7cd1ba0d93c099320a1d371fd17b8ccbaa8be236a3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e4b8e6bf8ab2e304b1d3ff7cd1ba0d93c099320a1d371fd17b8ccbaa8be236a3", kill_on_drop: false }`
[INFO] [stdout] e4b8e6bf8ab2e304b1d3ff7cd1ba0d93c099320a1d371fd17b8ccbaa8be236a3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 7cf8ba8081dd0408a1651ce04e53e5a5bf2e08952ea45d84cd0ee234fdae818e
[INFO] running `Command { std: "docker" "start" "-a" "7cf8ba8081dd0408a1651ce04e53e5a5bf2e08952ea45d84cd0ee234fdae818e", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.60
[INFO] [stderr]     Checking rand v0.4.6
[INFO] [stderr]     Checking nanoid v0.1.3
[INFO] [stderr]     Checking type_inference v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:14:13
[INFO] [stdout]    |
[INFO] [stdout] 14 |             box Exp::Int(1),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 14 -             box Exp::Int(1),
[INFO] [stdout] 14 +             Box::new(Exp::Int(1)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 |             box Exp::Var("x".to_string()),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 15 -             box Exp::Var("x".to_string()),
[INFO] [stdout] 15 +             Box::new(Exp::Var("x".to_string())),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | /         box Exp::Op(
[INFO] [stdout] 13 | |             Op::Plus,
[INFO] [stdout] 14 | |             box Exp::Int(1),
[INFO] [stdout] 15 | |             box Exp::Var("x".to_string()),
[INFO] [stdout] 16 | |         )
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 12 ~         Box::new(Exp::Op(
[INFO] [stdout] 13 |             Op::Plus,
[INFO] [stdout] 14 |             box Exp::Int(1),
[INFO] [stdout] 15 |             box Exp::Var("x".to_string()),
[INFO] [stdout] 16 ~         ))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:26:21
[INFO] [stdout]    |
[INFO] [stdout] 26 |                     box Exp::Var("x".to_string()),
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 26 -                     box Exp::Var("x".to_string()),
[INFO] [stdout] 26 +                     Box::new(Exp::Var("x".to_string())),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:27:21
[INFO] [stdout]    |
[INFO] [stdout] 27 |                     box Exp::Int(1),
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 27 -                     box Exp::Int(1),
[INFO] [stdout] 27 +                     Box::new(Exp::Int(1)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:24:17
[INFO] [stdout]    |
[INFO] [stdout] 24 | /                 box Exp::Op(
[INFO] [stdout] 25 | |                     Op::Plus,
[INFO] [stdout] 26 | |                     box Exp::Var("x".to_string()),
[INFO] [stdout] 27 | |                     box Exp::Int(1),
[INFO] [stdout] 28 | |                 ),
[INFO] [stdout]    | |_________________^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 24 ~                 Box::new(Exp::Op(
[INFO] [stdout] 25 |                     Op::Plus,
[INFO] [stdout] 26 |                     box Exp::Var("x".to_string()),
[INFO] [stdout] 27 |                     box Exp::Int(1),
[INFO] [stdout] 28 ~                 )),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:29:17
[INFO] [stdout]    |
[INFO] [stdout] 29 |                 box Exp::Var("y".to_string()),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 29 -                 box Exp::Var("y".to_string()),
[INFO] [stdout] 29 +                 Box::new(Exp::Var("y".to_string())),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:22:13
[INFO] [stdout]    |
[INFO] [stdout] 22 | /             box Exp::Op(
[INFO] [stdout] 23 | |                 Op::Plus,
[INFO] [stdout] 24 | |                 box Exp::Op(
[INFO] [stdout] 25 | |                     Op::Plus,
[INFO] [stdout] ...  |
[INFO] [stdout] 29 | |                 box Exp::Var("y".to_string()),
[INFO] [stdout] 30 | |             )
[INFO] [stdout]    | |_____________^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 22 ~             Box::new(Exp::Op(
[INFO] [stdout] 23 |                 Op::Plus,
[INFO] [stdout] ...
[INFO] [stdout] 29 |                 box Exp::Var("y".to_string()),
[INFO] [stdout] 30 ~             ))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | /         box Exp::Func(
[INFO] [stdout] 21 | |             "y".to_string(),
[INFO] [stdout] 22 | |             box Exp::Op(
[INFO] [stdout] 23 | |                 Op::Plus,
[INFO] [stdout] ...  |
[INFO] [stdout] 31 | |         )
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 20 ~         Box::new(Exp::Func(
[INFO] [stdout] 21 |             "y".to_string(),
[INFO] [stdout] ...
[INFO] [stdout] 30 |             )
[INFO] [stdout] 31 ~         ))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:39:17
[INFO] [stdout]    |
[INFO] [stdout] 39 |                 box Exp::Var("x".to_string()),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 39 -                 box Exp::Var("x".to_string()),
[INFO] [stdout] 39 +                 Box::new(Exp::Var("x".to_string())),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:40:17
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 box Exp::Var("y".to_string()),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 40 -                 box Exp::Var("y".to_string()),
[INFO] [stdout] 40 +                 Box::new(Exp::Var("y".to_string())),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:37:13
[INFO] [stdout]    |
[INFO] [stdout] 37 | /             box Exp::Op(
[INFO] [stdout] 38 | |                 Op::Plus,
[INFO] [stdout] 39 | |                 box Exp::Var("x".to_string()),
[INFO] [stdout] 40 | |                 box Exp::Var("y".to_string()),
[INFO] [stdout] 41 | |             )
[INFO] [stdout]    | |_____________^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 37 ~             Box::new(Exp::Op(
[INFO] [stdout] 38 |                 Op::Plus,
[INFO] [stdout] 39 |                 box Exp::Var("x".to_string()),
[INFO] [stdout] 40 |                 box Exp::Var("y".to_string()),
[INFO] [stdout] 41 ~             ))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | /         box Exp::Func(
[INFO] [stdout] 36 | |             "y".to_string(),
[INFO] [stdout] 37 | |             box Exp::Op(
[INFO] [stdout] 38 | |                 Op::Plus,
[INFO] [stdout] ...  |
[INFO] [stdout] 42 | |         )
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 35 ~         Box::new(Exp::Func(
[INFO] [stdout] 36 |             "y".to_string(),
[INFO] [stdout] ...
[INFO] [stdout] 41 |             )
[INFO] [stdout] 42 ~         ))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:47:13
[INFO] [stdout]    |
[INFO] [stdout] 47 |             box Exp::Var("x".to_string()),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 47 -             box Exp::Var("x".to_string()),
[INFO] [stdout] 47 +             Box::new(Exp::Var("x".to_string())),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:48:13
[INFO] [stdout]    |
[INFO] [stdout] 48 |             box Exp::Int(1),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 48 -             box Exp::Int(1),
[INFO] [stdout] 48 +             Box::new(Exp::Int(1)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:49:13
[INFO] [stdout]    |
[INFO] [stdout] 49 |             box Exp::Int(2),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 49 -             box Exp::Int(2),
[INFO] [stdout] 49 +             Box::new(Exp::Int(2)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 46 | /         box Exp::If(
[INFO] [stdout] 47 | |             box Exp::Var("x".to_string()),
[INFO] [stdout] 48 | |             box Exp::Int(1),
[INFO] [stdout] 49 | |             box Exp::Int(2),
[INFO] [stdout] 50 | |         )
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 46 ~         Box::new(Exp::If(
[INFO] [stdout] 47 |             box Exp::Var("x".to_string()),
[INFO] [stdout] 48 |             box Exp::Int(1),
[INFO] [stdout] 49 |             box Exp::Int(2),
[INFO] [stdout] 50 ~         ))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:56:13
[INFO] [stdout]    |
[INFO] [stdout] 56 |             box Exp::Bool(true),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 56 -             box Exp::Bool(true),
[INFO] [stdout] 56 +             Box::new(Exp::Bool(true)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:57:26
[INFO] [stdout]    |
[INFO] [stdout] 57 |             box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 57 -             box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout] 57 +             box Exp::App(Box::new(Exp::Var("x".to_string())),box Exp::Int(1)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:57:56
[INFO] [stdout]    |
[INFO] [stdout] 57 |             box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout]    |                                                        ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 57 -             box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout] 57 +             box Exp::App(box Exp::Var("x".to_string()),Box::new(Exp::Int(1))),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:57:13
[INFO] [stdout]    |
[INFO] [stdout] 57 |             box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 57 -             box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout] 57 +             Box::new(Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1))),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:58:13
[INFO] [stdout]    |
[INFO] [stdout] 58 |             box Exp::Int(1),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 58 -             box Exp::Int(1),
[INFO] [stdout] 58 +             Box::new(Exp::Int(1)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 55 | /         box Exp::If(
[INFO] [stdout] 56 | |             box Exp::Bool(true),
[INFO] [stdout] 57 | |             box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout] 58 | |             box Exp::Int(1),
[INFO] [stdout] 59 | |         ),
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 55 ~         Box::new(Exp::If(
[INFO] [stdout] 56 |             box Exp::Bool(true),
[INFO] [stdout] 57 |             box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout] 58 |             box Exp::Int(1),
[INFO] [stdout] 59 ~         )),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:60:22
[INFO] [stdout]    |
[INFO] [stdout] 60 |         box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 60 -         box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout] 60 +         box Exp::App(Box::new(Exp::Var("x".to_string())),box Exp::Int(1)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:60:52
[INFO] [stdout]    |
[INFO] [stdout] 60 |         box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout]    |                                                    ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 60 -         box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout] 60 +         box Exp::App(box Exp::Var("x".to_string()),Box::new(Exp::Int(1))),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |         box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 60 -         box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout] 60 +         Box::new(Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1))),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0557]: feature has been removed
[INFO] [stdout]  --> src/main.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(box_patterns,box_syntax,slice_patterns)]
[INFO] [stdout]   |                         ^^^^^^^^^^ feature has been removed
[INFO] [stdout]   |
[INFO] [stdout]   = note: removed in 1.70.0; see <https://github.com/rust-lang/rust/pull/108471> for more information
[INFO] [stdout]   = note: replaced with `#[rustc_box]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:14:13
[INFO] [stdout]    |
[INFO] [stdout] 14 |             box Exp::Int(1),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 14 -             box Exp::Int(1),
[INFO] [stdout] 14 +             Box::new(Exp::Int(1)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 |             box Exp::Var("x".to_string()),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 15 -             box Exp::Var("x".to_string()),
[INFO] [stdout] 15 +             Box::new(Exp::Var("x".to_string())),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | /         box Exp::Op(
[INFO] [stdout] 13 | |             Op::Plus,
[INFO] [stdout] 14 | |             box Exp::Int(1),
[INFO] [stdout] 15 | |             box Exp::Var("x".to_string()),
[INFO] [stdout] 16 | |         )
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 12 ~         Box::new(Exp::Op(
[INFO] [stdout] 13 |             Op::Plus,
[INFO] [stdout] 14 |             box Exp::Int(1),
[INFO] [stdout] 15 |             box Exp::Var("x".to_string()),
[INFO] [stdout] 16 ~         ))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:26:21
[INFO] [stdout]    |
[INFO] [stdout] 26 |                     box Exp::Var("x".to_string()),
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 26 -                     box Exp::Var("x".to_string()),
[INFO] [stdout] 26 +                     Box::new(Exp::Var("x".to_string())),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:27:21
[INFO] [stdout]    |
[INFO] [stdout] 27 |                     box Exp::Int(1),
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 27 -                     box Exp::Int(1),
[INFO] [stdout] 27 +                     Box::new(Exp::Int(1)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:24:17
[INFO] [stdout]    |
[INFO] [stdout] 24 | /                 box Exp::Op(
[INFO] [stdout] 25 | |                     Op::Plus,
[INFO] [stdout] 26 | |                     box Exp::Var("x".to_string()),
[INFO] [stdout] 27 | |                     box Exp::Int(1),
[INFO] [stdout] 28 | |                 ),
[INFO] [stdout]    | |_________________^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 24 ~                 Box::new(Exp::Op(
[INFO] [stdout] 25 |                     Op::Plus,
[INFO] [stdout] 26 |                     box Exp::Var("x".to_string()),
[INFO] [stdout] 27 |                     box Exp::Int(1),
[INFO] [stdout] 28 ~                 )),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:29:17
[INFO] [stdout]    |
[INFO] [stdout] 29 |                 box Exp::Var("y".to_string()),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 29 -                 box Exp::Var("y".to_string()),
[INFO] [stdout] 29 +                 Box::new(Exp::Var("y".to_string())),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:22:13
[INFO] [stdout]    |
[INFO] [stdout] 22 | /             box Exp::Op(
[INFO] [stdout] 23 | |                 Op::Plus,
[INFO] [stdout] 24 | |                 box Exp::Op(
[INFO] [stdout] 25 | |                     Op::Plus,
[INFO] [stdout] ...  |
[INFO] [stdout] 29 | |                 box Exp::Var("y".to_string()),
[INFO] [stdout] 30 | |             )
[INFO] [stdout]    | |_____________^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 22 ~             Box::new(Exp::Op(
[INFO] [stdout] 23 |                 Op::Plus,
[INFO] [stdout] ...
[INFO] [stdout] 29 |                 box Exp::Var("y".to_string()),
[INFO] [stdout] 30 ~             ))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | /         box Exp::Func(
[INFO] [stdout] 21 | |             "y".to_string(),
[INFO] [stdout] 22 | |             box Exp::Op(
[INFO] [stdout] 23 | |                 Op::Plus,
[INFO] [stdout] ...  |
[INFO] [stdout] 31 | |         )
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 20 ~         Box::new(Exp::Func(
[INFO] [stdout] 21 |             "y".to_string(),
[INFO] [stdout] ...
[INFO] [stdout] 30 |             )
[INFO] [stdout] 31 ~         ))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:39:17
[INFO] [stdout]    |
[INFO] [stdout] 39 |                 box Exp::Var("x".to_string()),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 39 -                 box Exp::Var("x".to_string()),
[INFO] [stdout] 39 +                 Box::new(Exp::Var("x".to_string())),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:40:17
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 box Exp::Var("y".to_string()),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 40 -                 box Exp::Var("y".to_string()),
[INFO] [stdout] 40 +                 Box::new(Exp::Var("y".to_string())),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:37:13
[INFO] [stdout]    |
[INFO] [stdout] 37 | /             box Exp::Op(
[INFO] [stdout] 38 | |                 Op::Plus,
[INFO] [stdout] 39 | |                 box Exp::Var("x".to_string()),
[INFO] [stdout] 40 | |                 box Exp::Var("y".to_string()),
[INFO] [stdout] 41 | |             )
[INFO] [stdout]    | |_____________^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 37 ~             Box::new(Exp::Op(
[INFO] [stdout] 38 |                 Op::Plus,
[INFO] [stdout] 39 |                 box Exp::Var("x".to_string()),
[INFO] [stdout] 40 |                 box Exp::Var("y".to_string()),
[INFO] [stdout] 41 ~             ))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | /         box Exp::Func(
[INFO] [stdout] 36 | |             "y".to_string(),
[INFO] [stdout] 37 | |             box Exp::Op(
[INFO] [stdout] 38 | |                 Op::Plus,
[INFO] [stdout] ...  |
[INFO] [stdout] 42 | |         )
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 35 ~         Box::new(Exp::Func(
[INFO] [stdout] 36 |             "y".to_string(),
[INFO] [stdout] ...
[INFO] [stdout] 41 |             )
[INFO] [stdout] 42 ~         ))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:47:13
[INFO] [stdout]    |
[INFO] [stdout] 47 |             box Exp::Var("x".to_string()),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 47 -             box Exp::Var("x".to_string()),
[INFO] [stdout] 47 +             Box::new(Exp::Var("x".to_string())),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:48:13
[INFO] [stdout]    |
[INFO] [stdout] 48 |             box Exp::Int(1),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 48 -             box Exp::Int(1),
[INFO] [stdout] 48 +             Box::new(Exp::Int(1)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:49:13
[INFO] [stdout]    |
[INFO] [stdout] 49 |             box Exp::Int(2),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 49 -             box Exp::Int(2),
[INFO] [stdout] 49 +             Box::new(Exp::Int(2)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 46 | /         box Exp::If(
[INFO] [stdout] 47 | |             box Exp::Var("x".to_string()),
[INFO] [stdout] 48 | |             box Exp::Int(1),
[INFO] [stdout] 49 | |             box Exp::Int(2),
[INFO] [stdout] 50 | |         )
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 46 ~         Box::new(Exp::If(
[INFO] [stdout] 47 |             box Exp::Var("x".to_string()),
[INFO] [stdout] 48 |             box Exp::Int(1),
[INFO] [stdout] 49 |             box Exp::Int(2),
[INFO] [stdout] 50 ~         ))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:56:13
[INFO] [stdout]    |
[INFO] [stdout] 56 |             box Exp::Bool(true),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 56 -             box Exp::Bool(true),
[INFO] [stdout] 56 +             Box::new(Exp::Bool(true)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:57:26
[INFO] [stdout]    |
[INFO] [stdout] 57 |             box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 57 -             box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout] 57 +             box Exp::App(Box::new(Exp::Var("x".to_string())),box Exp::Int(1)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:57:56
[INFO] [stdout]    |
[INFO] [stdout] 57 |             box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout]    |                                                        ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 57 -             box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout] 57 +             box Exp::App(box Exp::Var("x".to_string()),Box::new(Exp::Int(1))),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:57:13
[INFO] [stdout]    |
[INFO] [stdout] 57 |             box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 57 -             box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout] 57 +             Box::new(Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1))),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:106:21
[INFO] [stdout]     |
[INFO] [stdout] 106 |                     box env.clone(),
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 106 -                     box env.clone(),
[INFO] [stdout] 106 +                     Box::new(env.clone()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:118:21
[INFO] [stdout]     |
[INFO] [stdout] 118 |                     box env.clone(),
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 118 -                     box env.clone(),
[INFO] [stdout] 118 +                     Box::new(env.clone()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:123:21
[INFO] [stdout]     |
[INFO] [stdout] 123 |                     box x_env.clone(),
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 123 -                     box x_env.clone(),
[INFO] [stdout] 123 +                     Box::new(x_env.clone()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:156:21
[INFO] [stdout]     |
[INFO] [stdout] 156 |                     box env.clone(),
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 156 -                     box env.clone(),
[INFO] [stdout] 156 +                     Box::new(env.clone()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:161:33
[INFO] [stdout]     |
[INFO] [stdout] 161 |                 (e_r,Type::Func(box new_type_var,box e_typ))
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 161 -                 (e_r,Type::Func(box new_type_var,box e_typ))
[INFO] [stdout] 161 +                 (e_r,Type::Func(Box::new(new_type_var),box e_typ))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:161:50
[INFO] [stdout]     |
[INFO] [stdout] 161 |                 (e_r,Type::Func(box new_type_var,box e_typ))
[INFO] [stdout]     |                                                  ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 161 -                 (e_r,Type::Func(box new_type_var,box e_typ))
[INFO] [stdout] 161 +                 (e_r,Type::Func(box new_type_var,Box::new(e_typ)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:173:43
[INFO] [stdout]     |
[INFO] [stdout] 173 |                     Some(t) => Type::Func(box t.assign(assign),box typ.assign(assign)),
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 173 -                     Some(t) => Type::Func(box t.assign(assign),box typ.assign(assign)),
[INFO] [stdout] 173 +                     Some(t) => Type::Func(Box::new(t.assign(assign)),box typ.assign(assign)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:173:64
[INFO] [stdout]     |
[INFO] [stdout] 173 |                     Some(t) => Type::Func(box t.assign(assign),box typ.assign(assign)),
[INFO] [stdout]     |                                                                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 173 -                     Some(t) => Type::Func(box t.assign(assign),box typ.assign(assign)),
[INFO] [stdout] 173 +                     Some(t) => Type::Func(box t.assign(assign),Box::new(typ.assign(assign))),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:191:21
[INFO] [stdout]     |
[INFO] [stdout] 191 |                     box t1.assign_type_eq(typ_var_name,typ),
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 191 -                     box t1.assign_type_eq(typ_var_name,typ),
[INFO] [stdout] 191 +                     Box::new(t1.assign_type_eq(typ_var_name,typ)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:192:21
[INFO] [stdout]     |
[INFO] [stdout] 192 |                     box t2.assign_type_eq(typ_var_name,typ)
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 192 -                     box t2.assign_type_eq(typ_var_name,typ)
[INFO] [stdout] 192 +                     Box::new(t2.assign_type_eq(typ_var_name,typ))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:21:35
[INFO] [stdout]    |
[INFO] [stdout] 21 |             Ok((Exp::Op(Op::Plus, box exp, box ex), re))
[INFO] [stdout]    |                                   ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 21 -             Ok((Exp::Op(Op::Plus, box exp, box ex), re))
[INFO] [stdout] 21 +             Ok((Exp::Op(Op::Plus, Box::new(exp), box ex), re))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:21:44
[INFO] [stdout]    |
[INFO] [stdout] 21 |             Ok((Exp::Op(Op::Plus, box exp, box ex), re))
[INFO] [stdout]    |                                            ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 21 -             Ok((Exp::Op(Op::Plus, box exp, box ex), re))
[INFO] [stdout] 21 +             Ok((Exp::Op(Op::Plus, box exp, Box::new(ex)), re))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:35:33
[INFO] [stdout]    |
[INFO] [stdout] 35 |             Ok((Exp::Op(Op::Lt, box exp, box ex), re))
[INFO] [stdout]    |                                 ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 35 -             Ok((Exp::Op(Op::Lt, box exp, box ex), re))
[INFO] [stdout] 35 +             Ok((Exp::Op(Op::Lt, Box::new(exp), box ex), re))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:35:42
[INFO] [stdout]    |
[INFO] [stdout] 35 |             Ok((Exp::Op(Op::Lt, box exp, box ex), re))
[INFO] [stdout]    |                                          ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 35 -             Ok((Exp::Op(Op::Lt, box exp, box ex), re))
[INFO] [stdout] 35 +             Ok((Exp::Op(Op::Lt, box exp, Box::new(ex)), re))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:39:36
[INFO] [stdout]    |
[INFO] [stdout] 39 |             Ok((Exp::Op(Op::Equal, box exp, box ex), re))
[INFO] [stdout]    |                                    ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 39 -             Ok((Exp::Op(Op::Equal, box exp, box ex), re))
[INFO] [stdout] 39 +             Ok((Exp::Op(Op::Equal, Box::new(exp), box ex), re))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:39:45
[INFO] [stdout]    |
[INFO] [stdout] 39 |             Ok((Exp::Op(Op::Equal, box exp, box ex), re))
[INFO] [stdout]    |                                             ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 39 -             Ok((Exp::Op(Op::Equal, box exp, box ex), re))
[INFO] [stdout] 39 +             Ok((Exp::Op(Op::Equal, box exp, Box::new(ex)), re))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:43:36
[INFO] [stdout]    |
[INFO] [stdout] 43 |             Ok((Exp::Op(Op::Minus, box exp, box ex), re))
[INFO] [stdout]    |                                    ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 43 -             Ok((Exp::Op(Op::Minus, box exp, box ex), re))
[INFO] [stdout] 43 +             Ok((Exp::Op(Op::Minus, Box::new(exp), box ex), re))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:58:13
[INFO] [stdout]    |
[INFO] [stdout] 58 |             box Exp::Int(1),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 58 -             box Exp::Int(1),
[INFO] [stdout] 58 +             Box::new(Exp::Int(1)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:43:45
[INFO] [stdout]    |
[INFO] [stdout] 43 |             Ok((Exp::Op(Op::Minus, box exp, box ex), re))
[INFO] [stdout]    |                                             ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 43 -             Ok((Exp::Op(Op::Minus, box exp, box ex), re))
[INFO] [stdout] 43 +             Ok((Exp::Op(Op::Minus, box exp, Box::new(ex)), re))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:76:38
[INFO] [stdout]    |
[INFO] [stdout] 76 |             Ok((Exp::Func(s.clone(), box exp), res))
[INFO] [stdout]    |                                      ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 76 -             Ok((Exp::Func(s.clone(), box exp), res))
[INFO] [stdout] 76 +             Ok((Exp::Func(s.clone(), Box::new(exp)), res))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 55 | /         box Exp::If(
[INFO] [stdout] 56 | |             box Exp::Bool(true),
[INFO] [stdout] 57 | |             box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout] 58 | |             box Exp::Int(1),
[INFO] [stdout] 59 | |         ),
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 55 ~         Box::new(Exp::If(
[INFO] [stdout] 56 |             box Exp::Bool(true),
[INFO] [stdout] 57 |             box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout] 58 |             box Exp::Int(1),
[INFO] [stdout] 59 ~         )),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:99:44
[INFO] [stdout]    |
[INFO] [stdout] 99 |                     Ok((Exp::LetRec(f_v, v,box exp,box ex),r))
[INFO] [stdout]    |                                            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 99 -                     Ok((Exp::LetRec(f_v, v,box exp,box ex),r))
[INFO] [stdout] 99 +                     Ok((Exp::LetRec(f_v, v,Box::new(exp),box ex),r))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:99:52
[INFO] [stdout]    |
[INFO] [stdout] 99 |                     Ok((Exp::LetRec(f_v, v,box exp,box ex),r))
[INFO] [stdout]    |                                                    ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 99 -                     Ok((Exp::LetRec(f_v, v,box exp,box ex),r))
[INFO] [stdout] 99 +                     Ok((Exp::LetRec(f_v, v,box exp,Box::new(ex)),r))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/parser.rs:110:45
[INFO] [stdout]     |
[INFO] [stdout] 110 |         Ok((ex,rest)) => parse_app(Exp::App(box exp, box ex), rest),
[INFO] [stdout]     |                                             ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 110 -         Ok((ex,rest)) => parse_app(Exp::App(box exp, box ex), rest),
[INFO] [stdout] 110 +         Ok((ex,rest)) => parse_app(Exp::App(Box::new(exp), box ex), rest),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/parser.rs:110:54
[INFO] [stdout]     |
[INFO] [stdout] 110 |         Ok((ex,rest)) => parse_app(Exp::App(box exp, box ex), rest),
[INFO] [stdout]     |                                                      ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 110 -         Ok((ex,rest)) => parse_app(Exp::App(box exp, box ex), rest),
[INFO] [stdout] 110 +         Ok((ex,rest)) => parse_app(Exp::App(box exp, Box::new(ex)), rest),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:60:22
[INFO] [stdout]    |
[INFO] [stdout] 60 |         box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 60 -         box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout] 60 +         box Exp::App(Box::new(Exp::Var("x".to_string())),box Exp::Int(1)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/parser.rs:125:41
[INFO] [stdout]     |
[INFO] [stdout] 125 | ...                   Ok((Exp::If(box exp, box ex, box e), rrr))
[INFO] [stdout]     |                                   ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 125 -                             Ok((Exp::If(box exp, box ex, box e), rrr))
[INFO] [stdout] 125 +                             Ok((Exp::If(Box::new(exp), box ex, box e), rrr))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:60:52
[INFO] [stdout]    |
[INFO] [stdout] 60 |         box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout]    |                                                    ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 60 -         box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout] 60 +         box Exp::App(box Exp::Var("x".to_string()),Box::new(Exp::Int(1))),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/main.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |         box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 60 -         box Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1)),
[INFO] [stdout] 60 +         Box::new(Exp::App(box Exp::Var("x".to_string()),box Exp::Int(1))),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0557]: feature has been removed
[INFO] [stdout]  --> src/main.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(box_patterns,box_syntax,slice_patterns)]
[INFO] [stdout]   |                         ^^^^^^^^^^ feature has been removed
[INFO] [stdout]   |
[INFO] [stdout]   = note: removed in 1.70.0; see <https://github.com/rust-lang/rust/pull/108471> for more information
[INFO] [stdout]   = note: replaced with `#[rustc_box]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:106:21
[INFO] [stdout]     |
[INFO] [stdout] 106 |                     box env.clone(),
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 106 -                     box env.clone(),
[INFO] [stdout] 106 +                     Box::new(env.clone()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:118:21
[INFO] [stdout]     |
[INFO] [stdout] 118 |                     box env.clone(),
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 118 -                     box env.clone(),
[INFO] [stdout] 118 +                     Box::new(env.clone()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:123:21
[INFO] [stdout]     |
[INFO] [stdout] 123 |                     box x_env.clone(),
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 123 -                     box x_env.clone(),
[INFO] [stdout] 123 +                     Box::new(x_env.clone()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:156:21
[INFO] [stdout]     |
[INFO] [stdout] 156 |                     box env.clone(),
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 156 -                     box env.clone(),
[INFO] [stdout] 156 +                     Box::new(env.clone()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:161:33
[INFO] [stdout]     |
[INFO] [stdout] 161 |                 (e_r,Type::Func(box new_type_var,box e_typ))
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 161 -                 (e_r,Type::Func(box new_type_var,box e_typ))
[INFO] [stdout] 161 +                 (e_r,Type::Func(Box::new(new_type_var),box e_typ))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:161:50
[INFO] [stdout]     |
[INFO] [stdout] 161 |                 (e_r,Type::Func(box new_type_var,box e_typ))
[INFO] [stdout]     |                                                  ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 161 -                 (e_r,Type::Func(box new_type_var,box e_typ))
[INFO] [stdout] 161 +                 (e_r,Type::Func(box new_type_var,Box::new(e_typ)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:173:43
[INFO] [stdout]     |
[INFO] [stdout] 173 |                     Some(t) => Type::Func(box t.assign(assign),box typ.assign(assign)),
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 173 -                     Some(t) => Type::Func(box t.assign(assign),box typ.assign(assign)),
[INFO] [stdout] 173 +                     Some(t) => Type::Func(Box::new(t.assign(assign)),box typ.assign(assign)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:173:64
[INFO] [stdout]     |
[INFO] [stdout] 173 |                     Some(t) => Type::Func(box t.assign(assign),box typ.assign(assign)),
[INFO] [stdout]     |                                                                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 173 -                     Some(t) => Type::Func(box t.assign(assign),box typ.assign(assign)),
[INFO] [stdout] 173 +                     Some(t) => Type::Func(box t.assign(assign),Box::new(typ.assign(assign))),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:191:21
[INFO] [stdout]     |
[INFO] [stdout] 191 |                     box t1.assign_type_eq(typ_var_name,typ),
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 191 -                     box t1.assign_type_eq(typ_var_name,typ),
[INFO] [stdout] 191 +                     Box::new(t1.assign_type_eq(typ_var_name,typ)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:192:21
[INFO] [stdout]     |
[INFO] [stdout] 192 |                     box t2.assign_type_eq(typ_var_name,typ)
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 192 -                     box t2.assign_type_eq(typ_var_name,typ)
[INFO] [stdout] 192 +                     Box::new(t2.assign_type_eq(typ_var_name,typ))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:21:35
[INFO] [stdout]    |
[INFO] [stdout] 21 |             Ok((Exp::Op(Op::Plus, box exp, box ex), re))
[INFO] [stdout]    |                                   ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 21 -             Ok((Exp::Op(Op::Plus, box exp, box ex), re))
[INFO] [stdout] 21 +             Ok((Exp::Op(Op::Plus, Box::new(exp), box ex), re))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:21:44
[INFO] [stdout]    |
[INFO] [stdout] 21 |             Ok((Exp::Op(Op::Plus, box exp, box ex), re))
[INFO] [stdout]    |                                            ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 21 -             Ok((Exp::Op(Op::Plus, box exp, box ex), re))
[INFO] [stdout] 21 +             Ok((Exp::Op(Op::Plus, box exp, Box::new(ex)), re))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:35:33
[INFO] [stdout]    |
[INFO] [stdout] 35 |             Ok((Exp::Op(Op::Lt, box exp, box ex), re))
[INFO] [stdout]    |                                 ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 35 -             Ok((Exp::Op(Op::Lt, box exp, box ex), re))
[INFO] [stdout] 35 +             Ok((Exp::Op(Op::Lt, Box::new(exp), box ex), re))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:35:42
[INFO] [stdout]    |
[INFO] [stdout] 35 |             Ok((Exp::Op(Op::Lt, box exp, box ex), re))
[INFO] [stdout]    |                                          ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 35 -             Ok((Exp::Op(Op::Lt, box exp, box ex), re))
[INFO] [stdout] 35 +             Ok((Exp::Op(Op::Lt, box exp, Box::new(ex)), re))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:39:36
[INFO] [stdout]    |
[INFO] [stdout] 39 |             Ok((Exp::Op(Op::Equal, box exp, box ex), re))
[INFO] [stdout]    |                                    ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 39 -             Ok((Exp::Op(Op::Equal, box exp, box ex), re))
[INFO] [stdout] 39 +             Ok((Exp::Op(Op::Equal, Box::new(exp), box ex), re))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:39:45
[INFO] [stdout]    |
[INFO] [stdout] 39 |             Ok((Exp::Op(Op::Equal, box exp, box ex), re))
[INFO] [stdout]    |                                             ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 39 -             Ok((Exp::Op(Op::Equal, box exp, box ex), re))
[INFO] [stdout] 39 +             Ok((Exp::Op(Op::Equal, box exp, Box::new(ex)), re))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:43:36
[INFO] [stdout]    |
[INFO] [stdout] 43 |             Ok((Exp::Op(Op::Minus, box exp, box ex), re))
[INFO] [stdout]    |                                    ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 43 -             Ok((Exp::Op(Op::Minus, box exp, box ex), re))
[INFO] [stdout] 43 +             Ok((Exp::Op(Op::Minus, Box::new(exp), box ex), re))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:43:45
[INFO] [stdout]    |
[INFO] [stdout] 43 |             Ok((Exp::Op(Op::Minus, box exp, box ex), re))
[INFO] [stdout]    |                                             ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 43 -             Ok((Exp::Op(Op::Minus, box exp, box ex), re))
[INFO] [stdout] 43 +             Ok((Exp::Op(Op::Minus, box exp, Box::new(ex)), re))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:76:38
[INFO] [stdout]    |
[INFO] [stdout] 76 |             Ok((Exp::Func(s.clone(), box exp), res))
[INFO] [stdout]    |                                      ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 76 -             Ok((Exp::Func(s.clone(), box exp), res))
[INFO] [stdout] 76 +             Ok((Exp::Func(s.clone(), Box::new(exp)), res))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:99:44
[INFO] [stdout]    |
[INFO] [stdout] 99 |                     Ok((Exp::LetRec(f_v, v,box exp,box ex),r))
[INFO] [stdout]    |                                            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 99 -                     Ok((Exp::LetRec(f_v, v,box exp,box ex),r))
[INFO] [stdout] 99 +                     Ok((Exp::LetRec(f_v, v,Box::new(exp),box ex),r))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]   --> src/parser.rs:99:52
[INFO] [stdout]    |
[INFO] [stdout] 99 |                     Ok((Exp::LetRec(f_v, v,box exp,box ex),r))
[INFO] [stdout]    |                                                    ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]    |
[INFO] [stdout] 99 -                     Ok((Exp::LetRec(f_v, v,box exp,box ex),r))
[INFO] [stdout] 99 +                     Ok((Exp::LetRec(f_v, v,box exp,Box::new(ex)),r))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/parser.rs:110:45
[INFO] [stdout]     |
[INFO] [stdout] 110 |         Ok((ex,rest)) => parse_app(Exp::App(box exp, box ex), rest),
[INFO] [stdout]     |                                             ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 110 -         Ok((ex,rest)) => parse_app(Exp::App(box exp, box ex), rest),
[INFO] [stdout] 110 +         Ok((ex,rest)) => parse_app(Exp::App(Box::new(exp), box ex), rest),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/parser.rs:125:50
[INFO] [stdout]     |
[INFO] [stdout] 125 | ...                   Ok((Exp::If(box exp, box ex, box e), rrr))
[INFO] [stdout]     |                                            ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 125 -                             Ok((Exp::If(box exp, box ex, box e), rrr))
[INFO] [stdout] 125 +                             Ok((Exp::If(box exp, Box::new(ex), box e), rrr))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/parser.rs:110:54
[INFO] [stdout]     |
[INFO] [stdout] 110 |         Ok((ex,rest)) => parse_app(Exp::App(box exp, box ex), rest),
[INFO] [stdout]     |                                                      ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 110 -         Ok((ex,rest)) => parse_app(Exp::App(box exp, box ex), rest),
[INFO] [stdout] 110 +         Ok((ex,rest)) => parse_app(Exp::App(box exp, Box::new(ex)), rest),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/parser.rs:125:41
[INFO] [stdout]     |
[INFO] [stdout] 125 | ...                   Ok((Exp::If(box exp, box ex, box e), rrr))
[INFO] [stdout]     |                                   ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 125 -                             Ok((Exp::If(box exp, box ex, box e), rrr))
[INFO] [stdout] 125 +                             Ok((Exp::If(Box::new(exp), box ex, box e), rrr))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/parser.rs:125:50
[INFO] [stdout]     |
[INFO] [stdout] 125 | ...                   Ok((Exp::If(box exp, box ex, box e), rrr))
[INFO] [stdout]     |                                            ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 125 -                             Ok((Exp::If(box exp, box ex, box e), rrr))
[INFO] [stdout] 125 +                             Ok((Exp::If(box exp, Box::new(ex), box e), rrr))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/parser.rs:125:58
[INFO] [stdout]     |
[INFO] [stdout] 125 | ...                   Ok((Exp::If(box exp, box ex, box e), rrr))
[INFO] [stdout]     |                                                    ^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 125 -                             Ok((Exp::If(box exp, box ex, box e), rrr))
[INFO] [stdout] 125 +                             Ok((Exp::If(box exp, box ex, Box::new(e)), rrr))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/parser.rs:125:58
[INFO] [stdout]     |
[INFO] [stdout] 125 | ...                   Ok((Exp::If(box exp, box ex, box e), rrr))
[INFO] [stdout]     |                                                    ^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 125 -                             Ok((Exp::If(box exp, box ex, box e), rrr))
[INFO] [stdout] 125 +                             Ok((Exp::If(box exp, box ex, Box::new(e)), rrr))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:131:78
[INFO] [stdout]     |
[INFO] [stdout] 131 |                     new_restrictions(vec![TypeEquation(type_var_x,Type::Func(box type_var_y,box e1_typ))])
[INFO] [stdout]     |                                                                              ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 131 -                     new_restrictions(vec![TypeEquation(type_var_x,Type::Func(box type_var_y,box e1_typ))])
[INFO] [stdout] 131 +                     new_restrictions(vec![TypeEquation(type_var_x,Type::Func(Box::new(type_var_y),box e1_typ))])
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:131:93
[INFO] [stdout]     |
[INFO] [stdout] 131 |                     new_restrictions(vec![TypeEquation(type_var_x,Type::Func(box type_var_y,box e1_typ))])
[INFO] [stdout]     |                                                                                             ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 131 -                     new_restrictions(vec![TypeEquation(type_var_x,Type::Func(box type_var_y,box e1_typ))])
[INFO] [stdout] 131 +                     new_restrictions(vec![TypeEquation(type_var_x,Type::Func(box type_var_y,Box::new(e1_typ)))])
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:149:101
[INFO] [stdout]     |
[INFO] [stdout] 149 | ...   let r2 = merge_restrictions(r1,new_restrictions(vec![TypeEquation(e1_typ,Type::Func(box e2_typ,box new_type_var.clone()))])); 
[INFO] [stdout]     |                                                                                           ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 149 -                 let r2 = merge_restrictions(r1,new_restrictions(vec![TypeEquation(e1_typ,Type::Func(box e2_typ,box new_type_var.clone()))])); 
[INFO] [stdout] 149 +                 let r2 = merge_restrictions(r1,new_restrictions(vec![TypeEquation(e1_typ,Type::Func(Box::new(e2_typ),box new_type_var.clone()))])); 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:149:112
[INFO] [stdout]     |
[INFO] [stdout] 149 | ...   let r2 = merge_restrictions(r1,new_restrictions(vec![TypeEquation(e1_typ,Type::Func(box e2_typ,box new_type_var.clone()))])); 
[INFO] [stdout]     |                                                                                                      ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 149 -                 let r2 = merge_restrictions(r1,new_restrictions(vec![TypeEquation(e1_typ,Type::Func(box e2_typ,box new_type_var.clone()))])); 
[INFO] [stdout] 149 +                 let r2 = merge_restrictions(r1,new_restrictions(vec![TypeEquation(e1_typ,Type::Func(box e2_typ,Box::new(new_type_var.clone())))])); 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:131:78
[INFO] [stdout]     |
[INFO] [stdout] 131 |                     new_restrictions(vec![TypeEquation(type_var_x,Type::Func(box type_var_y,box e1_typ))])
[INFO] [stdout]     |                                                                              ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 131 -                     new_restrictions(vec![TypeEquation(type_var_x,Type::Func(box type_var_y,box e1_typ))])
[INFO] [stdout] 131 +                     new_restrictions(vec![TypeEquation(type_var_x,Type::Func(Box::new(type_var_y),box e1_typ))])
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:131:93
[INFO] [stdout]     |
[INFO] [stdout] 131 |                     new_restrictions(vec![TypeEquation(type_var_x,Type::Func(box type_var_y,box e1_typ))])
[INFO] [stdout]     |                                                                                             ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 131 -                     new_restrictions(vec![TypeEquation(type_var_x,Type::Func(box type_var_y,box e1_typ))])
[INFO] [stdout] 131 +                     new_restrictions(vec![TypeEquation(type_var_x,Type::Func(box type_var_y,Box::new(e1_typ)))])
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:149:101
[INFO] [stdout]     |
[INFO] [stdout] 149 | ...   let r2 = merge_restrictions(r1,new_restrictions(vec![TypeEquation(e1_typ,Type::Func(box e2_typ,box new_type_var.clone()))])); 
[INFO] [stdout]     |                                                                                           ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 149 -                 let r2 = merge_restrictions(r1,new_restrictions(vec![TypeEquation(e1_typ,Type::Func(box e2_typ,box new_type_var.clone()))])); 
[INFO] [stdout] 149 +                 let r2 = merge_restrictions(r1,new_restrictions(vec![TypeEquation(e1_typ,Type::Func(Box::new(e2_typ),box new_type_var.clone()))])); 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: `box_syntax` has been removed
[INFO] [stdout]    --> src/ast.rs:149:112
[INFO] [stdout]     |
[INFO] [stdout] 149 | ...   let r2 = merge_restrictions(r1,new_restrictions(vec![TypeEquation(e1_typ,Type::Func(box e2_typ,box new_type_var.clone()))])); 
[INFO] [stdout]     |                                                                                                      ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `Box::new()` instead
[INFO] [stdout]     |
[INFO] [stdout] 149 -                 let r2 = merge_restrictions(r1,new_restrictions(vec![TypeEquation(e1_typ,Type::Func(box e2_typ,box new_type_var.clone()))])); 
[INFO] [stdout] 149 +                 let r2 = merge_restrictions(r1,new_restrictions(vec![TypeEquation(e1_typ,Type::Func(box e2_typ,Box::new(new_type_var.clone())))])); 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/ast.rs:233:30
[INFO] [stdout]     |
[INFO] [stdout] 233 |         [TypeEquation(t1,t2),rest..] if t1 == t2 => {
[INFO] [stdout]     |                              ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 233 |         [TypeEquation(t1,t2),rest @ ..] if t1 == t2 => {
[INFO] [stdout]     |                                   +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 233 -         [TypeEquation(t1,t2),rest..] if t1 == t2 => {
[INFO] [stdout] 233 +         [TypeEquation(t1,t2),std::ops::RangeFrom { start: rest }] if t1 == t2 => {
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 233 -         [TypeEquation(t1,t2),rest..] if t1 == t2 => {
[INFO] [stdout] 233 +         [TypeEquation(t1,t2),res..] if t1 == t2 => {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/ast.rs:234:23
[INFO] [stdout]     |
[INFO] [stdout] 234 |             unify_sub(rest)
[INFO] [stdout]     |                       ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 234 -             unify_sub(rest)
[INFO] [stdout] 234 +             unify_sub(res)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/ast.rs:236:84
[INFO] [stdout]     |
[INFO] [stdout] 236 |         [TypeEquation(Type::Func(box f1_a,box f1_b),Type::Func(box f2_a,box f2_b)),rest..] => {
[INFO] [stdout]     |                                                                                    ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 236 |         [TypeEquation(Type::Func(box f1_a,box f1_b),Type::Func(box f2_a,box f2_b)),rest @ ..] => {
[INFO] [stdout]     |                                                                                         +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 236 -         [TypeEquation(Type::Func(box f1_a,box f1_b),Type::Func(box f2_a,box f2_b)),rest..] => {
[INFO] [stdout] 236 +         [TypeEquation(Type::Func(box f1_a,box f1_b),Type::Func(box f2_a,box f2_b)),std::ops::RangeFrom { start: rest }] => {
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 236 -         [TypeEquation(Type::Func(box f1_a,box f1_b),Type::Func(box f2_a,box f2_b)),rest..] => {
[INFO] [stdout] 236 +         [TypeEquation(Type::Func(box f1_a,box f1_b),Type::Func(box f2_a,box f2_b)),res..] => {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/ast.rs:233:30
[INFO] [stdout]     |
[INFO] [stdout] 233 |         [TypeEquation(t1,t2),rest..] if t1 == t2 => {
[INFO] [stdout]     |                              ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 233 |         [TypeEquation(t1,t2),rest @ ..] if t1 == t2 => {
[INFO] [stdout]     |                                   +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 233 -         [TypeEquation(t1,t2),rest..] if t1 == t2 => {
[INFO] [stdout] 233 +         [TypeEquation(t1,t2),std::ops::RangeFrom { start: rest }] if t1 == t2 => {
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 233 -         [TypeEquation(t1,t2),rest..] if t1 == t2 => {
[INFO] [stdout] 233 +         [TypeEquation(t1,t2),res..] if t1 == t2 => {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/ast.rs:237:41
[INFO] [stdout]     |
[INFO] [stdout] 237 | ...   let re: Vec<TypeEquation> = rest.iter().cloned().chain(vec![TypeEquation(f1_a.clone(),f2_a.clone()),TypeEquation(f1_b.clone()...
[INFO] [stdout]     |                                   ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 237 -             let re: Vec<TypeEquation> = rest.iter().cloned().chain(vec![TypeEquation(f1_a.clone(),f2_a.clone()),TypeEquation(f1_b.clone(),f2_b.clone())]).collect();
[INFO] [stdout] 237 +             let re: Vec<TypeEquation> = res.iter().cloned().chain(vec![TypeEquation(f1_a.clone(),f2_a.clone()),TypeEquation(f1_b.clone(),f2_b.clone())]).collect();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/ast.rs:240:45
[INFO] [stdout]     |
[INFO] [stdout] 240 |         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout]     |                                             ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 240 |         [TypeEquation(Type::TypeVar(v),typ),rest @ ..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout]     |                                                  +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 240 -         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout] 240 +         [TypeEquation(Type::TypeVar(v),typ),std::ops::RangeFrom { start: rest }] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 240 -         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout] 240 +         [TypeEquation(Type::TypeVar(v),typ),res..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/ast.rs:240:91
[INFO] [stdout]     |
[INFO] [stdout] 240 |         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout]     |                                                                                           ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 240 |         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),rest @ ..] => {
[INFO] [stdout]     |                                                                                                +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 240 -         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout] 240 +         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),std::ops::RangeFrom { start: rest }] => {
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 240 -         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout] 240 +         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),res..] => {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/ast.rs:241:49
[INFO] [stdout]     |
[INFO] [stdout] 241 |             let mut s = unify_sub(&assign(v,typ,rest));
[INFO] [stdout]     |                                                 ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 241 -             let mut s = unify_sub(&assign(v,typ,rest));
[INFO] [stdout] 241 +             let mut s = unify_sub(&assign(v,typ,res));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/lexer.rs:43:17
[INFO] [stdout]    |
[INFO] [stdout] 43 |         [first, rest..] => match first {
[INFO] [stdout]    |                 ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 43 |         [first, rest @ ..] => match first {
[INFO] [stdout]    |                      +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 43 -         [first, rest..] => match first {
[INFO] [stdout] 43 +         [first, std::ops::RangeFrom { start: rest }] => match first {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/lexer.rs:44:27
[INFO] [stdout]    |
[INFO] [stdout] 44 |             '\"' => (acm, rest),
[INFO] [stdout]    |                           ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/lexer.rs:45:31
[INFO] [stdout]    |
[INFO] [stdout] 45 |             _c => get_str_sub(rest, format!("{}{}", acm, first)),
[INFO] [stdout]    |                               ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/lexer.rs:57:17
[INFO] [stdout]    |
[INFO] [stdout] 57 |         [first, rest..] if first.is_alphabetic() || first.is_numeric() || *first == '\'' => {
[INFO] [stdout]    |                 ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 57 |         [first, rest @ ..] if first.is_alphabetic() || first.is_numeric() || *first == '\'' => {
[INFO] [stdout]    |                      +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 57 -         [first, rest..] if first.is_alphabetic() || first.is_numeric() || *first == '\'' => {
[INFO] [stdout] 57 +         [first, std::ops::RangeFrom { start: rest }] if first.is_alphabetic() || first.is_numeric() || *first == '\'' => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/lexer.rs:58:29
[INFO] [stdout]    |
[INFO] [stdout] 58 |             get_keyword_sub(rest, format!("{}{}", acm, first))
[INFO] [stdout]    |                             ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/lexer.rs:88:17
[INFO] [stdout]    |
[INFO] [stdout] 88 |         [first, rest..] => {
[INFO] [stdout]    |                 ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 88 |         [first, rest @ ..] => {
[INFO] [stdout]    |                      +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 88 -         [first, rest..] => {
[INFO] [stdout] 88 +         [first, std::ops::RangeFrom { start: rest }] => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/lexer.rs:90:33
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 get_num_str_sub(rest, format!("{}{}", acm, first), is_float, is_minus)
[INFO] [stdout]    |                                 ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/lexer.rs:92:33
[INFO] [stdout]    |
[INFO] [stdout] 92 |                 get_num_str_sub(rest, format!("{}{}", acm, first), is_float, is_minus)
[INFO] [stdout]    |                                 ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/lexer.rs:94:33
[INFO] [stdout]    |
[INFO] [stdout] 94 |                 get_num_str_sub(rest, format!("{}{}", acm, first), true, is_minus)
[INFO] [stdout]    |                                 ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/ast.rs:234:23
[INFO] [stdout]     |
[INFO] [stdout] 234 |             unify_sub(rest)
[INFO] [stdout]     |                       ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 234 -             unify_sub(rest)
[INFO] [stdout] 234 +             unify_sub(res)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/ast.rs:236:84
[INFO] [stdout]     |
[INFO] [stdout] 236 |         [TypeEquation(Type::Func(box f1_a,box f1_b),Type::Func(box f2_a,box f2_b)),rest..] => {
[INFO] [stdout]     |                                                                                    ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 236 |         [TypeEquation(Type::Func(box f1_a,box f1_b),Type::Func(box f2_a,box f2_b)),rest @ ..] => {
[INFO] [stdout]     |                                                                                         +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 236 -         [TypeEquation(Type::Func(box f1_a,box f1_b),Type::Func(box f2_a,box f2_b)),rest..] => {
[INFO] [stdout] 236 +         [TypeEquation(Type::Func(box f1_a,box f1_b),Type::Func(box f2_a,box f2_b)),std::ops::RangeFrom { start: rest }] => {
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 236 -         [TypeEquation(Type::Func(box f1_a,box f1_b),Type::Func(box f2_a,box f2_b)),rest..] => {
[INFO] [stdout] 236 +         [TypeEquation(Type::Func(box f1_a,box f1_b),Type::Func(box f2_a,box f2_b)),res..] => {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/ast.rs:237:41
[INFO] [stdout]     |
[INFO] [stdout] 237 | ...   let re: Vec<TypeEquation> = rest.iter().cloned().chain(vec![TypeEquation(f1_a.clone(),f2_a.clone()),TypeEquation(f1_b.clone()...
[INFO] [stdout]     |                                   ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 237 -             let re: Vec<TypeEquation> = rest.iter().cloned().chain(vec![TypeEquation(f1_a.clone(),f2_a.clone()),TypeEquation(f1_b.clone(),f2_b.clone())]).collect();
[INFO] [stdout] 237 +             let re: Vec<TypeEquation> = res.iter().cloned().chain(vec![TypeEquation(f1_a.clone(),f2_a.clone()),TypeEquation(f1_b.clone(),f2_b.clone())]).collect();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:105:17
[INFO] [stdout]     |
[INFO] [stdout] 105 |         [first, rest..] => match first {
[INFO] [stdout]     |                 ^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 105 |         [first, rest @ ..] => match first {
[INFO] [stdout]     |                      +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 105 -         [first, rest..] => match first {
[INFO] [stdout] 105 +         [first, std::ops::RangeFrom { start: rest }] => match first {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/ast.rs:240:45
[INFO] [stdout]     |
[INFO] [stdout] 240 |         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout]     |                                             ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 240 |         [TypeEquation(Type::TypeVar(v),typ),rest @ ..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout]     |                                                  +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 240 -         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout] 240 +         [TypeEquation(Type::TypeVar(v),typ),std::ops::RangeFrom { start: rest }] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 240 -         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout] 240 +         [TypeEquation(Type::TypeVar(v),typ),res..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/ast.rs:240:91
[INFO] [stdout]     |
[INFO] [stdout] 240 |         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout]     |                                                                                           ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 240 |         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),rest @ ..] => {
[INFO] [stdout]     |                                                                                                +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 240 -         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout] 240 +         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),std::ops::RangeFrom { start: rest }] => {
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 240 -         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout] 240 +         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),res..] => {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/ast.rs:241:49
[INFO] [stdout]     |
[INFO] [stdout] 241 |             let mut s = unify_sub(&assign(v,typ,rest));
[INFO] [stdout]     |                                                 ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 241 -             let mut s = unify_sub(&assign(v,typ,rest));
[INFO] [stdout] 241 +             let mut s = unify_sub(&assign(v,typ,res));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/lexer.rs:43:17
[INFO] [stdout]    |
[INFO] [stdout] 43 |         [first, rest..] => match first {
[INFO] [stdout]    |                 ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 43 |         [first, rest @ ..] => match first {
[INFO] [stdout]    |                      +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 43 -         [first, rest..] => match first {
[INFO] [stdout] 43 +         [first, std::ops::RangeFrom { start: rest }] => match first {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/lexer.rs:44:27
[INFO] [stdout]    |
[INFO] [stdout] 44 |             '\"' => (acm, rest),
[INFO] [stdout]    |                           ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/lexer.rs:45:31
[INFO] [stdout]    |
[INFO] [stdout] 45 |             _c => get_str_sub(rest, format!("{}{}", acm, first)),
[INFO] [stdout]    |                               ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:106:32
[INFO] [stdout]     |
[INFO] [stdout] 106 |             '\n' => next_token(rest),
[INFO] [stdout]     |                                ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:107:31
[INFO] [stdout]     |
[INFO] [stdout] 107 |             ' ' => next_token(rest),
[INFO] [stdout]     |                               ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:108:32
[INFO] [stdout]     |
[INFO] [stdout] 108 |             '\t' => next_token(rest),
[INFO] [stdout]     |                                ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:109:35
[INFO] [stdout]     |
[INFO] [stdout] 109 |             '=' => (Token::EQUAL, rest),
[INFO] [stdout]     |                                   ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:110:34
[INFO] [stdout]     |
[INFO] [stdout] 110 |             '(' => (Token::LPAR, rest),
[INFO] [stdout]     |                                  ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:111:34
[INFO] [stdout]     |
[INFO] [stdout] 111 |             ')' => (Token::RPAR, rest),
[INFO] [stdout]     |                                  ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:112:38
[INFO] [stdout]     |
[INFO] [stdout] 112 |             '[' => (Token::LBRACKET, rest),
[INFO] [stdout]     |                                      ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:113:38
[INFO] [stdout]     |
[INFO] [stdout] 113 |             ']' => (Token::RBRACKET, rest),
[INFO] [stdout]     |                                      ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:114:34
[INFO] [stdout]     |
[INFO] [stdout] 114 |             '+' => (Token::PLUS, rest),
[INFO] [stdout]     |                                  ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:115:32
[INFO] [stdout]     |
[INFO] [stdout] 115 |             '_' => (Token::ANY,rest),
[INFO] [stdout]     |                                ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:116:26
[INFO] [stdout]     |
[INFO] [stdout] 116 |             '-' => match rest {
[INFO] [stdout]     |                          ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]    --> src/lexer.rs:117:23
[INFO] [stdout]     |
[INFO] [stdout] 117 |                 ['>', res..] => (Token::RARROW, res),
[INFO] [stdout]     |                       ^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `res`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 117 |                 ['>', res @ ..] => (Token::RARROW, res),
[INFO] [stdout]     |                           +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 117 -                 ['>', res..] => (Token::RARROW, res),
[INFO] [stdout] 117 +                 ['>', std::ops::RangeFrom { start: res }] => (Token::RARROW, res),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]    --> src/lexer.rs:117:49
[INFO] [stdout]     |
[INFO] [stdout] 117 |                 ['>', res..] => (Token::RARROW, res),
[INFO] [stdout]     |                                                 ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:118:37
[INFO] [stdout]     |
[INFO] [stdout] 118 |                 _ => (Token::MINUS, rest),
[INFO] [stdout]     |                                     ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:120:26
[INFO] [stdout]     |
[INFO] [stdout] 120 |             ':' => match rest {
[INFO] [stdout]     |                          ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]    --> src/lexer.rs:121:22
[INFO] [stdout]     |
[INFO] [stdout] 121 |                 [':',res..] => (Token::JOINER, res),
[INFO] [stdout]     |                      ^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `res`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 121 |                 [':',res @ ..] => (Token::JOINER, res),
[INFO] [stdout]     |                          +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 121 -                 [':',res..] => (Token::JOINER, res),
[INFO] [stdout] 121 +                 [':',std::ops::RangeFrom { start: res }] => (Token::JOINER, res),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/lexer.rs:57:17
[INFO] [stdout]    |
[INFO] [stdout] 57 |         [first, rest..] if first.is_alphabetic() || first.is_numeric() || *first == '\'' => {
[INFO] [stdout]    |                 ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 57 |         [first, rest @ ..] if first.is_alphabetic() || first.is_numeric() || *first == '\'' => {
[INFO] [stdout]    |                      +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 57 -         [first, rest..] if first.is_alphabetic() || first.is_numeric() || *first == '\'' => {
[INFO] [stdout] 57 +         [first, std::ops::RangeFrom { start: rest }] if first.is_alphabetic() || first.is_numeric() || *first == '\'' => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]    --> src/lexer.rs:121:48
[INFO] [stdout]     |
[INFO] [stdout] 121 |                 [':',res..] => (Token::JOINER, res),
[INFO] [stdout]     |                                                ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/lexer.rs:58:29
[INFO] [stdout]    |
[INFO] [stdout] 58 |             get_keyword_sub(rest, format!("{}{}", acm, first))
[INFO] [stdout]    |                             ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/lexer.rs:88:17
[INFO] [stdout]    |
[INFO] [stdout] 88 |         [first, rest..] => {
[INFO] [stdout]    |                 ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 88 |         [first, rest @ ..] => {
[INFO] [stdout]    |                      +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 88 -         [first, rest..] => {
[INFO] [stdout] 88 +         [first, std::ops::RangeFrom { start: rest }] => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/lexer.rs:90:33
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 get_num_str_sub(rest, format!("{}{}", acm, first), is_float, is_minus)
[INFO] [stdout]    |                                 ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/lexer.rs:92:33
[INFO] [stdout]    |
[INFO] [stdout] 92 |                 get_num_str_sub(rest, format!("{}{}", acm, first), is_float, is_minus)
[INFO] [stdout]    |                                 ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/lexer.rs:94:33
[INFO] [stdout]    |
[INFO] [stdout] 94 |                 get_num_str_sub(rest, format!("{}{}", acm, first), true, is_minus)
[INFO] [stdout]    |                                 ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:105:17
[INFO] [stdout]     |
[INFO] [stdout] 105 |         [first, rest..] => match first {
[INFO] [stdout]     |                 ^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 105 |         [first, rest @ ..] => match first {
[INFO] [stdout]     |                      +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 105 -         [first, rest..] => match first {
[INFO] [stdout] 105 +         [first, std::ops::RangeFrom { start: rest }] => match first {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:106:32
[INFO] [stdout]     |
[INFO] [stdout] 106 |             '\n' => next_token(rest),
[INFO] [stdout]     |                                ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:107:31
[INFO] [stdout]     |
[INFO] [stdout] 107 |             ' ' => next_token(rest),
[INFO] [stdout]     |                               ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:108:32
[INFO] [stdout]     |
[INFO] [stdout] 108 |             '\t' => next_token(rest),
[INFO] [stdout]     |                                ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:109:35
[INFO] [stdout]     |
[INFO] [stdout] 109 |             '=' => (Token::EQUAL, rest),
[INFO] [stdout]     |                                   ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:110:34
[INFO] [stdout]     |
[INFO] [stdout] 110 |             '(' => (Token::LPAR, rest),
[INFO] [stdout]     |                                  ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:111:34
[INFO] [stdout]     |
[INFO] [stdout] 111 |             ')' => (Token::RPAR, rest),
[INFO] [stdout]     |                                  ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:112:38
[INFO] [stdout]     |
[INFO] [stdout] 112 |             '[' => (Token::LBRACKET, rest),
[INFO] [stdout]     |                                      ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:113:38
[INFO] [stdout]     |
[INFO] [stdout] 113 |             ']' => (Token::RBRACKET, rest),
[INFO] [stdout]     |                                      ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:114:34
[INFO] [stdout]     |
[INFO] [stdout] 114 |             '+' => (Token::PLUS, rest),
[INFO] [stdout]     |                                  ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:115:32
[INFO] [stdout]     |
[INFO] [stdout] 115 |             '_' => (Token::ANY,rest),
[INFO] [stdout]     |                                ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:116:26
[INFO] [stdout]     |
[INFO] [stdout] 116 |             '-' => match rest {
[INFO] [stdout]     |                          ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]    --> src/lexer.rs:117:23
[INFO] [stdout]     |
[INFO] [stdout] 117 |                 ['>', res..] => (Token::RARROW, res),
[INFO] [stdout]     |                       ^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `res`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 117 |                 ['>', res @ ..] => (Token::RARROW, res),
[INFO] [stdout]     |                           +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 117 -                 ['>', res..] => (Token::RARROW, res),
[INFO] [stdout] 117 +                 ['>', std::ops::RangeFrom { start: res }] => (Token::RARROW, res),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:122:33
[INFO] [stdout]     |
[INFO] [stdout] 122 |                 _ => next_token(rest)
[INFO] [stdout]     |                                 ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:124:32
[INFO] [stdout]     |
[INFO] [stdout] 124 |             '<' => (Token::LT, rest),
[INFO] [stdout]     |                                ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:125:33
[INFO] [stdout]     |
[INFO] [stdout] 125 |             '*' => (Token::MUL, rest),
[INFO] [stdout]     |                                 ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:126:33
[INFO] [stdout]     |
[INFO] [stdout] 126 |             '|' => (Token::BAR, rest),
[INFO] [stdout]     |                                 ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:19:23
[INFO] [stdout]    |
[INFO] [stdout] 19 |         [Token::PLUS, res..] => {
[INFO] [stdout]    |                       ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `res`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 19 |         [Token::PLUS, res @ ..] => {
[INFO] [stdout]    |                           +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 19 -         [Token::PLUS, res..] => {
[INFO] [stdout] 19 +         [Token::PLUS, std::ops::RangeFrom { start: res }] => {
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 19 |         [Token::PLUS, rest..] => {
[INFO] [stdout]    |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:20:38
[INFO] [stdout]    |
[INFO] [stdout] 20 |             let (ex, re) = parse_exp(res)?;
[INFO] [stdout]    |                                      ^^^
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 20 |             let (ex, re) = parse_exp(rest)?;
[INFO] [stdout]    |                                         +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:24:23
[INFO] [stdout]    |
[INFO] [stdout] 24 |         [Token::RPAR, res..] => Ok((exp, rest)),
[INFO] [stdout]    |                       ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `res`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 24 |         [Token::RPAR, res @ ..] => Ok((exp, rest)),
[INFO] [stdout]    |                           +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 24 -         [Token::RPAR, res..] => Ok((exp, rest)),
[INFO] [stdout] 24 +         [Token::RPAR, std::ops::RangeFrom { start: res }] => Ok((exp, rest)),
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 24 |         [Token::RPAR, rest..] => Ok((exp, rest)),
[INFO] [stdout]    |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:25:21
[INFO] [stdout]    |
[INFO] [stdout] 25 |         [Token::IN, res..] => Ok((exp, rest)),
[INFO] [stdout]    |                     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `res`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 25 |         [Token::IN, res @ ..] => Ok((exp, rest)),
[INFO] [stdout]    |                         +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 25 -         [Token::IN, res..] => Ok((exp, rest)),
[INFO] [stdout] 25 +         [Token::IN, std::ops::RangeFrom { start: res }] => Ok((exp, rest)),
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 25 |         [Token::IN, rest..] => Ok((exp, rest)),
[INFO] [stdout]    |                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:33:21
[INFO] [stdout]    |
[INFO] [stdout] 33 |         [Token::LT, res..] => {
[INFO] [stdout]    |                     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `res`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 33 |         [Token::LT, res @ ..] => {
[INFO] [stdout]    |                         +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 33 -         [Token::LT, res..] => {
[INFO] [stdout] 33 +         [Token::LT, std::ops::RangeFrom { start: res }] => {
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 33 |         [Token::LT, rest..] => {
[INFO] [stdout]    |                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:34:41
[INFO] [stdout]    |
[INFO] [stdout] 34 |             let (ex, re) = parse_op_exp(res)?;
[INFO] [stdout]    |                                         ^^^
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 34 |             let (ex, re) = parse_op_exp(rest)?;
[INFO] [stdout]    |                                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:37:23
[INFO] [stdout]    |
[INFO] [stdout] 37 |         [Token::EQUAL,res..] => {
[INFO] [stdout]    |                       ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `res`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 37 |         [Token::EQUAL,res @ ..] => {
[INFO] [stdout]    |                           +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 37 -         [Token::EQUAL,res..] => {
[INFO] [stdout] 37 +         [Token::EQUAL,std::ops::RangeFrom { start: res }] => {
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 37 |         [Token::EQUAL,rest..] => {
[INFO] [stdout]    |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:38:41
[INFO] [stdout]    |
[INFO] [stdout] 38 |             let (ex, re) = parse_op_exp(res)?;
[INFO] [stdout]    |                                         ^^^
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 38 |             let (ex, re) = parse_op_exp(rest)?;
[INFO] [stdout]    |                                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:41:23
[INFO] [stdout]    |
[INFO] [stdout] 41 |         [Token::MINUS,res..] => {
[INFO] [stdout]    |                       ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `res`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 41 |         [Token::MINUS,res @ ..] => {
[INFO] [stdout]    |                           +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 41 -         [Token::MINUS,res..] => {
[INFO] [stdout] 41 +         [Token::MINUS,std::ops::RangeFrom { start: res }] => {
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 41 |         [Token::MINUS,rest..] => {
[INFO] [stdout]    |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:42:41
[INFO] [stdout]    |
[INFO] [stdout] 42 |             let (ex, re) = parse_op_exp(res)?;
[INFO] [stdout]    |                                         ^^^
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 42 |             let (ex, re) = parse_op_exp(rest)?;
[INFO] [stdout]    |                                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:51:23
[INFO] [stdout]    |
[INFO] [stdout] 51 |         [Token::LPAR, rest..] => {
[INFO] [stdout]    |                       ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 51 |         [Token::LPAR, rest @ ..] => {
[INFO] [stdout]    |                            +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 51 -         [Token::LPAR, rest..] => {
[INFO] [stdout] 51 +         [Token::LPAR, std::ops::RangeFrom { start: rest }] => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:52:40
[INFO] [stdout]    |
[INFO] [stdout] 52 |             let (exp, res) = parse_exp(rest)?;
[INFO] [stdout]    |                                        ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]    --> src/lexer.rs:117:49
[INFO] [stdout]     |
[INFO] [stdout] 117 |                 ['>', res..] => (Token::RARROW, res),
[INFO] [stdout]     |                                                 ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:118:37
[INFO] [stdout]     |
[INFO] [stdout] 118 |                 _ => (Token::MINUS, rest),
[INFO] [stdout]     |                                     ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:120:26
[INFO] [stdout]     |
[INFO] [stdout] 120 |             ':' => match rest {
[INFO] [stdout]     |                          ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]    --> src/lexer.rs:121:22
[INFO] [stdout]     |
[INFO] [stdout] 121 |                 [':',res..] => (Token::JOINER, res),
[INFO] [stdout]     |                      ^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `res`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 121 |                 [':',res @ ..] => (Token::JOINER, res),
[INFO] [stdout]     |                          +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 121 -                 [':',res..] => (Token::JOINER, res),
[INFO] [stdout] 121 +                 [':',std::ops::RangeFrom { start: res }] => (Token::JOINER, res),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]    --> src/lexer.rs:121:48
[INFO] [stdout]     |
[INFO] [stdout] 121 |                 [':',res..] => (Token::JOINER, res),
[INFO] [stdout]     |                                                ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `re` in this scope
[INFO] [stdout]   --> src/parser.rs:54:31
[INFO] [stdout]    |
[INFO] [stdout] 54 |                 [Token::RPAR, re..] => Ok((exp, re)),
[INFO] [stdout]    |                               ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `re`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 54 |                 [Token::RPAR, re @ ..] => Ok((exp, re)),
[INFO] [stdout]    |                                  +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 54 -                 [Token::RPAR, re..] => Ok((exp, re)),
[INFO] [stdout] 54 +                 [Token::RPAR, std::ops::RangeFrom { start: re }] => Ok((exp, re)),
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 54 |                 [Token::RPAR, res..] => Ok((exp, re)),
[INFO] [stdout]    |                                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:122:33
[INFO] [stdout]     |
[INFO] [stdout] 122 |                 _ => next_token(rest)
[INFO] [stdout]     |                                 ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:124:32
[INFO] [stdout]     |
[INFO] [stdout] 124 |             '<' => (Token::LT, rest),
[INFO] [stdout]     |                                ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:125:33
[INFO] [stdout]     |
[INFO] [stdout] 125 |             '*' => (Token::MUL, rest),
[INFO] [stdout]     |                                 ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/lexer.rs:126:33
[INFO] [stdout]     |
[INFO] [stdout] 126 |             '|' => (Token::BAR, rest),
[INFO] [stdout]     |                                 ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `re` in this scope
[INFO] [stdout]   --> src/parser.rs:54:49
[INFO] [stdout]    |
[INFO] [stdout] 54 |                 [Token::RPAR, re..] => Ok((exp, re)),
[INFO] [stdout]    |                                                 ^^
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 54 |                 [Token::RPAR, re..] => Ok((exp, res)),
[INFO] [stdout]    |                                                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:19:23
[INFO] [stdout]    |
[INFO] [stdout] 19 |         [Token::PLUS, res..] => {
[INFO] [stdout]    |                       ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `res`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 19 |         [Token::PLUS, res @ ..] => {
[INFO] [stdout]    |                           +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 19 -         [Token::PLUS, res..] => {
[INFO] [stdout] 19 +         [Token::PLUS, std::ops::RangeFrom { start: res }] => {
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 19 |         [Token::PLUS, rest..] => {
[INFO] [stdout]    |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:20:38
[INFO] [stdout]    |
[INFO] [stdout] 20 |             let (ex, re) = parse_exp(res)?;
[INFO] [stdout]    |                                      ^^^
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 20 |             let (ex, re) = parse_exp(rest)?;
[INFO] [stdout]    |                                         +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:24:23
[INFO] [stdout]    |
[INFO] [stdout] 24 |         [Token::RPAR, res..] => Ok((exp, rest)),
[INFO] [stdout]    |                       ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `res`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 24 |         [Token::RPAR, res @ ..] => Ok((exp, rest)),
[INFO] [stdout]    |                           +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 24 -         [Token::RPAR, res..] => Ok((exp, rest)),
[INFO] [stdout] 24 +         [Token::RPAR, std::ops::RangeFrom { start: res }] => Ok((exp, rest)),
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 24 |         [Token::RPAR, rest..] => Ok((exp, rest)),
[INFO] [stdout]    |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:58:25
[INFO] [stdout]    |
[INFO] [stdout] 58 |         [Token::INT(i), rest..] => Ok((Exp::Int(*i), rest)),
[INFO] [stdout]    |                         ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 58 |         [Token::INT(i), rest @ ..] => Ok((Exp::Int(*i), rest)),
[INFO] [stdout]    |                              +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 58 -         [Token::INT(i), rest..] => Ok((Exp::Int(*i), rest)),
[INFO] [stdout] 58 +         [Token::INT(i), std::ops::RangeFrom { start: rest }] => Ok((Exp::Int(*i), rest)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:25:21
[INFO] [stdout]    |
[INFO] [stdout] 25 |         [Token::IN, res..] => Ok((exp, rest)),
[INFO] [stdout]    |                     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `res`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 25 |         [Token::IN, res @ ..] => Ok((exp, rest)),
[INFO] [stdout]    |                         +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 25 -         [Token::IN, res..] => Ok((exp, rest)),
[INFO] [stdout] 25 +         [Token::IN, std::ops::RangeFrom { start: res }] => Ok((exp, rest)),
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 25 |         [Token::IN, rest..] => Ok((exp, rest)),
[INFO] [stdout]    |                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:58:54
[INFO] [stdout]    |
[INFO] [stdout] 58 |         [Token::INT(i), rest..] => Ok((Exp::Int(*i), rest)),
[INFO] [stdout]    |                                                      ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:33:21
[INFO] [stdout]    |
[INFO] [stdout] 33 |         [Token::LT, res..] => {
[INFO] [stdout]    |                     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `res`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 33 |         [Token::LT, res @ ..] => {
[INFO] [stdout]    |                         +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 33 -         [Token::LT, res..] => {
[INFO] [stdout] 33 +         [Token::LT, std::ops::RangeFrom { start: res }] => {
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 33 |         [Token::LT, rest..] => {
[INFO] [stdout]    |                        +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:34:41
[INFO] [stdout]    |
[INFO] [stdout] 34 |             let (ex, re) = parse_op_exp(res)?;
[INFO] [stdout]    |                                         ^^^
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 34 |             let (ex, re) = parse_op_exp(rest)?;
[INFO] [stdout]    |                                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:37:23
[INFO] [stdout]    |
[INFO] [stdout] 37 |         [Token::EQUAL,res..] => {
[INFO] [stdout]    |                       ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `res`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 37 |         [Token::EQUAL,res @ ..] => {
[INFO] [stdout]    |                           +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 37 -         [Token::EQUAL,res..] => {
[INFO] [stdout] 37 +         [Token::EQUAL,std::ops::RangeFrom { start: res }] => {
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 37 |         [Token::EQUAL,rest..] => {
[INFO] [stdout]    |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:59:25
[INFO] [stdout]    |
[INFO] [stdout] 59 |         [Token::VAR(s), rest..] => Ok((Exp::Var(s.clone()), rest)),
[INFO] [stdout]    |                         ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 59 |         [Token::VAR(s), rest @ ..] => Ok((Exp::Var(s.clone()), rest)),
[INFO] [stdout]    |                              +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 59 -         [Token::VAR(s), rest..] => Ok((Exp::Var(s.clone()), rest)),
[INFO] [stdout] 59 +         [Token::VAR(s), std::ops::RangeFrom { start: rest }] => Ok((Exp::Var(s.clone()), rest)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:59:61
[INFO] [stdout]    |
[INFO] [stdout] 59 |         [Token::VAR(s), rest..] => Ok((Exp::Var(s.clone()), rest)),
[INFO] [stdout]    |                                                             ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:38:41
[INFO] [stdout]    |
[INFO] [stdout] 38 |             let (ex, re) = parse_op_exp(res)?;
[INFO] [stdout]    |                                         ^^^
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 38 |             let (ex, re) = parse_op_exp(rest)?;
[INFO] [stdout]    |                                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:60:23
[INFO] [stdout]    |
[INFO] [stdout] 60 |         [Token::TRUE, rest..] => Ok((Exp::Bool(true), rest)),
[INFO] [stdout]    |                       ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 60 |         [Token::TRUE, rest @ ..] => Ok((Exp::Bool(true), rest)),
[INFO] [stdout]    |                            +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 60 -         [Token::TRUE, rest..] => Ok((Exp::Bool(true), rest)),
[INFO] [stdout] 60 +         [Token::TRUE, std::ops::RangeFrom { start: rest }] => Ok((Exp::Bool(true), rest)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:41:23
[INFO] [stdout]    |
[INFO] [stdout] 41 |         [Token::MINUS,res..] => {
[INFO] [stdout]    |                       ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `res`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 41 |         [Token::MINUS,res @ ..] => {
[INFO] [stdout]    |                           +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 41 -         [Token::MINUS,res..] => {
[INFO] [stdout] 41 +         [Token::MINUS,std::ops::RangeFrom { start: res }] => {
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 41 |         [Token::MINUS,rest..] => {
[INFO] [stdout]    |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/parser.rs:42:41
[INFO] [stdout]    |
[INFO] [stdout] 42 |             let (ex, re) = parse_op_exp(res)?;
[INFO] [stdout]    |                                         ^^^
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 42 |             let (ex, re) = parse_op_exp(rest)?;
[INFO] [stdout]    |                                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:51:23
[INFO] [stdout]    |
[INFO] [stdout] 51 |         [Token::LPAR, rest..] => {
[INFO] [stdout]    |                       ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 51 |         [Token::LPAR, rest @ ..] => {
[INFO] [stdout]    |                            +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 51 -         [Token::LPAR, rest..] => {
[INFO] [stdout] 51 +         [Token::LPAR, std::ops::RangeFrom { start: rest }] => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:52:40
[INFO] [stdout]    |
[INFO] [stdout] 52 |             let (exp, res) = parse_exp(rest)?;
[INFO] [stdout]    |                                        ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `re` in this scope
[INFO] [stdout]   --> src/parser.rs:54:31
[INFO] [stdout]    |
[INFO] [stdout] 54 |                 [Token::RPAR, re..] => Ok((exp, re)),
[INFO] [stdout]    |                               ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `re`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 54 |                 [Token::RPAR, re @ ..] => Ok((exp, re)),
[INFO] [stdout]    |                                  +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 54 -                 [Token::RPAR, re..] => Ok((exp, re)),
[INFO] [stdout] 54 +                 [Token::RPAR, std::ops::RangeFrom { start: re }] => Ok((exp, re)),
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 54 |                 [Token::RPAR, res..] => Ok((exp, re)),
[INFO] [stdout]    |                                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `re` in this scope
[INFO] [stdout]   --> src/parser.rs:54:49
[INFO] [stdout]    |
[INFO] [stdout] 54 |                 [Token::RPAR, re..] => Ok((exp, re)),
[INFO] [stdout]    |                                                 ^^
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 54 |                 [Token::RPAR, re..] => Ok((exp, res)),
[INFO] [stdout]    |                                                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:58:25
[INFO] [stdout]    |
[INFO] [stdout] 58 |         [Token::INT(i), rest..] => Ok((Exp::Int(*i), rest)),
[INFO] [stdout]    |                         ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 58 |         [Token::INT(i), rest @ ..] => Ok((Exp::Int(*i), rest)),
[INFO] [stdout]    |                              +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 58 -         [Token::INT(i), rest..] => Ok((Exp::Int(*i), rest)),
[INFO] [stdout] 58 +         [Token::INT(i), std::ops::RangeFrom { start: rest }] => Ok((Exp::Int(*i), rest)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:58:54
[INFO] [stdout]    |
[INFO] [stdout] 58 |         [Token::INT(i), rest..] => Ok((Exp::Int(*i), rest)),
[INFO] [stdout]    |                                                      ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:60:55
[INFO] [stdout]    |
[INFO] [stdout] 60 |         [Token::TRUE, rest..] => Ok((Exp::Bool(true), rest)),
[INFO] [stdout]    |                                                       ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:59:25
[INFO] [stdout]    |
[INFO] [stdout] 59 |         [Token::VAR(s), rest..] => Ok((Exp::Var(s.clone()), rest)),
[INFO] [stdout]    |                         ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 59 |         [Token::VAR(s), rest @ ..] => Ok((Exp::Var(s.clone()), rest)),
[INFO] [stdout]    |                              +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 59 -         [Token::VAR(s), rest..] => Ok((Exp::Var(s.clone()), rest)),
[INFO] [stdout] 59 +         [Token::VAR(s), std::ops::RangeFrom { start: rest }] => Ok((Exp::Var(s.clone()), rest)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:61:24
[INFO] [stdout]    |
[INFO] [stdout] 61 |         [Token::FALSE, rest..] => Ok((Exp::Bool(false), rest)),
[INFO] [stdout]    |                        ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 61 |         [Token::FALSE, rest @ ..] => Ok((Exp::Bool(false), rest)),
[INFO] [stdout]    |                             +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 61 -         [Token::FALSE, rest..] => Ok((Exp::Bool(false), rest)),
[INFO] [stdout] 61 +         [Token::FALSE, std::ops::RangeFrom { start: rest }] => Ok((Exp::Bool(false), rest)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:61:57
[INFO] [stdout]    |
[INFO] [stdout] 61 |         [Token::FALSE, rest..] => Ok((Exp::Bool(false), rest)),
[INFO] [stdout]    |                                                         ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:62:34
[INFO] [stdout]    |
[INFO] [stdout] 62 |         [Token::LET, Token::REC, rest..] => parse_let_rec(tokens),
[INFO] [stdout]    |                                  ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 62 |         [Token::LET, Token::REC, rest @ ..] => parse_let_rec(tokens),
[INFO] [stdout]    |                                       +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 62 -         [Token::LET, Token::REC, rest..] => parse_let_rec(tokens),
[INFO] [stdout] 62 +         [Token::LET, Token::REC, std::ops::RangeFrom { start: rest }] => parse_let_rec(tokens),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:63:21
[INFO] [stdout]    |
[INFO] [stdout] 63 |         [Token::IF, rest..] => parse_if(tokens),
[INFO] [stdout]    |                     ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 63 |         [Token::IF, rest @ ..] => parse_if(tokens),
[INFO] [stdout]    |                          +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 63 -         [Token::IF, rest..] => parse_if(tokens),
[INFO] [stdout] 63 +         [Token::IF, std::ops::RangeFrom { start: rest }] => parse_if(tokens),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:64:27
[INFO] [stdout]    |
[INFO] [stdout] 64 |         [Token::FUNCTION, rest..] => parse_fun(tokens),
[INFO] [stdout]    |                           ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 64 |         [Token::FUNCTION, rest @ ..] => parse_fun(tokens),
[INFO] [stdout]    |                                +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 64 -         [Token::FUNCTION, rest..] => parse_fun(tokens),
[INFO] [stdout] 64 +         [Token::FUNCTION, std::ops::RangeFrom { start: rest }] => parse_fun(tokens),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:74:57
[INFO] [stdout]    |
[INFO] [stdout] 74 |         [Token::FUNCTION, Token::VAR(s), Token::RARROW, rest..] => {
[INFO] [stdout]    |                                                         ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 74 |         [Token::FUNCTION, Token::VAR(s), Token::RARROW, rest @ ..] => {
[INFO] [stdout]    |                                                              +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 74 -         [Token::FUNCTION, Token::VAR(s), Token::RARROW, rest..] => {
[INFO] [stdout] 74 +         [Token::FUNCTION, Token::VAR(s), Token::RARROW, std::ops::RangeFrom { start: rest }] => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:75:40
[INFO] [stdout]    |
[INFO] [stdout] 75 |             let (exp, res) = parse_exp(rest)?;
[INFO] [stdout]    |                                        ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:84:57
[INFO] [stdout]    |
[INFO] [stdout] 84 |         [Token::FUNCTION, Token::VAR(s), Token::RARROW, rest..] => {
[INFO] [stdout]    |                                                         ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 84 |         [Token::FUNCTION, Token::VAR(s), Token::RARROW, rest @ ..] => {
[INFO] [stdout]    |                                                              +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 84 -         [Token::FUNCTION, Token::VAR(s), Token::RARROW, rest..] => {
[INFO] [stdout] 84 +         [Token::FUNCTION, Token::VAR(s), Token::RARROW, std::ops::RangeFrom { start: rest }] => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:85:40
[INFO] [stdout]    |
[INFO] [stdout] 85 |             let (exp, res) = parse_exp(rest)?;
[INFO] [stdout]    |                                        ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:94:63
[INFO] [stdout]    |
[INFO] [stdout] 94 |         [Token::LET, Token::REC, Token::VAR(s), Token::EQUAL, rest..] => {
[INFO] [stdout]    |                                                               ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 94 |         [Token::LET, Token::REC, Token::VAR(s), Token::EQUAL, rest @ ..] => {
[INFO] [stdout]    |                                                                    +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 94 -         [Token::LET, Token::REC, Token::VAR(s), Token::EQUAL, rest..] => {
[INFO] [stdout] 94 +         [Token::LET, Token::REC, Token::VAR(s), Token::EQUAL, std::ops::RangeFrom { start: rest }] => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:95:62
[INFO] [stdout]    |
[INFO] [stdout] 95 |             let ((f_v,v,exp),res) = parse_rec_fun(s.clone(), rest)?;
[INFO] [stdout]    |                                                              ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `re` in this scope
[INFO] [stdout]   --> src/parser.rs:97:29
[INFO] [stdout]    |
[INFO] [stdout] 97 |                 [Token::IN, re..] => {
[INFO] [stdout]    |                             ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `re`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 97 |                 [Token::IN, re @ ..] => {
[INFO] [stdout]    |                                +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 97 -                 [Token::IN, re..] => {
[INFO] [stdout] 97 +                 [Token::IN, std::ops::RangeFrom { start: re }] => {
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 97 |                 [Token::IN, res..] => {
[INFO] [stdout]    |                               +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `re` in this scope
[INFO] [stdout]   --> src/parser.rs:98:45
[INFO] [stdout]    |
[INFO] [stdout] 98 |                     let (ex, r) = parse_exp(re)?;
[INFO] [stdout]    |                                             ^^
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 98 |                     let (ex, r) = parse_exp(res)?;
[INFO] [stdout]    |                                               +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/parser.rs:117:21
[INFO] [stdout]     |
[INFO] [stdout] 117 |         [Token::IF, rest..] => {
[INFO] [stdout]     |                     ^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 117 |         [Token::IF, rest @ ..] => {
[INFO] [stdout]     |                          +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 117 -         [Token::IF, rest..] => {
[INFO] [stdout] 117 +         [Token::IF, std::ops::RangeFrom { start: rest }] => {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:59:61
[INFO] [stdout]    |
[INFO] [stdout] 59 |         [Token::VAR(s), rest..] => Ok((Exp::Var(s.clone()), rest)),
[INFO] [stdout]    |                                                             ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:60:23
[INFO] [stdout]    |
[INFO] [stdout] 60 |         [Token::TRUE, rest..] => Ok((Exp::Bool(true), rest)),
[INFO] [stdout]    |                       ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 60 |         [Token::TRUE, rest @ ..] => Ok((Exp::Bool(true), rest)),
[INFO] [stdout]    |                            +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 60 -         [Token::TRUE, rest..] => Ok((Exp::Bool(true), rest)),
[INFO] [stdout] 60 +         [Token::TRUE, std::ops::RangeFrom { start: rest }] => Ok((Exp::Bool(true), rest)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:60:55
[INFO] [stdout]    |
[INFO] [stdout] 60 |         [Token::TRUE, rest..] => Ok((Exp::Bool(true), rest)),
[INFO] [stdout]    |                                                       ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:61:24
[INFO] [stdout]    |
[INFO] [stdout] 61 |         [Token::FALSE, rest..] => Ok((Exp::Bool(false), rest)),
[INFO] [stdout]    |                        ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 61 |         [Token::FALSE, rest @ ..] => Ok((Exp::Bool(false), rest)),
[INFO] [stdout]    |                             +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 61 -         [Token::FALSE, rest..] => Ok((Exp::Bool(false), rest)),
[INFO] [stdout] 61 +         [Token::FALSE, std::ops::RangeFrom { start: rest }] => Ok((Exp::Bool(false), rest)),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:61:57
[INFO] [stdout]    |
[INFO] [stdout] 61 |         [Token::FALSE, rest..] => Ok((Exp::Bool(false), rest)),
[INFO] [stdout]    |                                                         ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:62:34
[INFO] [stdout]    |
[INFO] [stdout] 62 |         [Token::LET, Token::REC, rest..] => parse_let_rec(tokens),
[INFO] [stdout]    |                                  ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 62 |         [Token::LET, Token::REC, rest @ ..] => parse_let_rec(tokens),
[INFO] [stdout]    |                                       +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 62 -         [Token::LET, Token::REC, rest..] => parse_let_rec(tokens),
[INFO] [stdout] 62 +         [Token::LET, Token::REC, std::ops::RangeFrom { start: rest }] => parse_let_rec(tokens),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:63:21
[INFO] [stdout]    |
[INFO] [stdout] 63 |         [Token::IF, rest..] => parse_if(tokens),
[INFO] [stdout]    |                     ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 63 |         [Token::IF, rest @ ..] => parse_if(tokens),
[INFO] [stdout]    |                          +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 63 -         [Token::IF, rest..] => parse_if(tokens),
[INFO] [stdout] 63 +         [Token::IF, std::ops::RangeFrom { start: rest }] => parse_if(tokens),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:64:27
[INFO] [stdout]    |
[INFO] [stdout] 64 |         [Token::FUNCTION, rest..] => parse_fun(tokens),
[INFO] [stdout]    |                           ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 64 |         [Token::FUNCTION, rest @ ..] => parse_fun(tokens),
[INFO] [stdout]    |                                +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 64 -         [Token::FUNCTION, rest..] => parse_fun(tokens),
[INFO] [stdout] 64 +         [Token::FUNCTION, std::ops::RangeFrom { start: rest }] => parse_fun(tokens),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:74:57
[INFO] [stdout]    |
[INFO] [stdout] 74 |         [Token::FUNCTION, Token::VAR(s), Token::RARROW, rest..] => {
[INFO] [stdout]    |                                                         ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 74 |         [Token::FUNCTION, Token::VAR(s), Token::RARROW, rest @ ..] => {
[INFO] [stdout]    |                                                              +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 74 -         [Token::FUNCTION, Token::VAR(s), Token::RARROW, rest..] => {
[INFO] [stdout] 74 +         [Token::FUNCTION, Token::VAR(s), Token::RARROW, std::ops::RangeFrom { start: rest }] => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:75:40
[INFO] [stdout]    |
[INFO] [stdout] 75 |             let (exp, res) = parse_exp(rest)?;
[INFO] [stdout]    |                                        ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:84:57
[INFO] [stdout]    |
[INFO] [stdout] 84 |         [Token::FUNCTION, Token::VAR(s), Token::RARROW, rest..] => {
[INFO] [stdout]    |                                                         ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 84 |         [Token::FUNCTION, Token::VAR(s), Token::RARROW, rest @ ..] => {
[INFO] [stdout]    |                                                              +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 84 -         [Token::FUNCTION, Token::VAR(s), Token::RARROW, rest..] => {
[INFO] [stdout] 84 +         [Token::FUNCTION, Token::VAR(s), Token::RARROW, std::ops::RangeFrom { start: rest }] => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:85:40
[INFO] [stdout]    |
[INFO] [stdout] 85 |             let (exp, res) = parse_exp(rest)?;
[INFO] [stdout]    |                                        ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/parser.rs:118:40
[INFO] [stdout]     |
[INFO] [stdout] 118 |             let (exp, res) = parse_exp(rest)?;
[INFO] [stdout]     |                                        ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:94:63
[INFO] [stdout]    |
[INFO] [stdout] 94 |         [Token::LET, Token::REC, Token::VAR(s), Token::EQUAL, rest..] => {
[INFO] [stdout]    |                                                               ^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 94 |         [Token::LET, Token::REC, Token::VAR(s), Token::EQUAL, rest @ ..] => {
[INFO] [stdout]    |                                                                    +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 94 -         [Token::LET, Token::REC, Token::VAR(s), Token::EQUAL, rest..] => {
[INFO] [stdout] 94 +         [Token::LET, Token::REC, Token::VAR(s), Token::EQUAL, std::ops::RangeFrom { start: rest }] => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `re` in this scope
[INFO] [stdout]    --> src/parser.rs:120:31
[INFO] [stdout]     |
[INFO] [stdout] 120 |                 [Token::THEN, re..] => {
[INFO] [stdout]     |                               ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `re`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 120 |                 [Token::THEN, re @ ..] => {
[INFO] [stdout]     |                                  +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 120 -                 [Token::THEN, re..] => {
[INFO] [stdout] 120 +                 [Token::THEN, std::ops::RangeFrom { start: re }] => {
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 120 |                 [Token::THEN, res..] => {
[INFO] [stdout]     |                                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]   --> src/parser.rs:95:62
[INFO] [stdout]    |
[INFO] [stdout] 95 |             let ((f_v,v,exp),res) = parse_rec_fun(s.clone(), rest)?;
[INFO] [stdout]    |                                                              ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `re` in this scope
[INFO] [stdout]    --> src/parser.rs:121:45
[INFO] [stdout]     |
[INFO] [stdout] 121 |                     let (ex, r) = parse_exp(re)?;
[INFO] [stdout]     |                                             ^^
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 121 |                     let (ex, r) = parse_exp(res)?;
[INFO] [stdout]     |                                               +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `re` in this scope
[INFO] [stdout]   --> src/parser.rs:97:29
[INFO] [stdout]    |
[INFO] [stdout] 97 |                 [Token::IN, re..] => {
[INFO] [stdout]    |                             ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `re`, use the at operator
[INFO] [stdout]    |
[INFO] [stdout] 97 |                 [Token::IN, re @ ..] => {
[INFO] [stdout]    |                                +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]    |
[INFO] [stdout] 97 -                 [Token::IN, re..] => {
[INFO] [stdout] 97 +                 [Token::IN, std::ops::RangeFrom { start: re }] => {
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 97 |                 [Token::IN, res..] => {
[INFO] [stdout]    |                               +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rr` in this scope
[INFO] [stdout]    --> src/parser.rs:123:39
[INFO] [stdout]     |
[INFO] [stdout] 123 |                         [Token::ELSE, rr..] => {
[INFO] [stdout]     |                                       ^^
[INFO] [stdout]     |
[INFO] [stdout]    --> /rustc/54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47/library/core/src/result.rs:566:4
[INFO] [stdout]     |
[INFO] [stdout]     = note: similarly named tuple variant `Err` defined here
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rr`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 123 |                         [Token::ELSE, rr @ ..] => {
[INFO] [stdout]     |                                          +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 123 -                         [Token::ELSE, rr..] => {
[INFO] [stdout] 123 +                         [Token::ELSE, std::ops::RangeFrom { start: rr }] => {
[INFO] [stdout]     |
[INFO] [stdout] help: a tuple variant with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 123 |                         [Token::ELSE, Err..] => {
[INFO] [stdout]     |                                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `re` in this scope
[INFO] [stdout]   --> src/parser.rs:98:45
[INFO] [stdout]    |
[INFO] [stdout] 98 |                     let (ex, r) = parse_exp(re)?;
[INFO] [stdout]    |                                             ^^
[INFO] [stdout]    |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 98 |                     let (ex, r) = parse_exp(res)?;
[INFO] [stdout]    |                                               +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rr` in this scope
[INFO] [stdout]    --> src/parser.rs:124:54
[INFO] [stdout]     |
[INFO] [stdout] 124 | ...                   let (e, rrr) = parse_exp(rr)?;
[INFO] [stdout]     |                                                ^^
[INFO] [stdout]     |
[INFO] [stdout]    --> /rustc/54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47/library/core/src/result.rs:566:4
[INFO] [stdout]     |
[INFO] [stdout]     = note: similarly named tuple variant `Err` defined here
[INFO] [stdout] help: a tuple variant with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 124 |                             let (e, rrr) = parse_exp(Err)?;
[INFO] [stdout]     |                                                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/parser.rs:130:42
[INFO] [stdout]     |
[INFO] [stdout] 130 |                 _ => Err(format!("{:?}", rest)),
[INFO] [stdout]     |                                          ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 130 -                 _ => Err(format!("{:?}", rest)),
[INFO] [stdout] 130 +                 _ => Err(format!("{:?}", res)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/parser.rs:117:21
[INFO] [stdout]     |
[INFO] [stdout] 117 |         [Token::IF, rest..] => {
[INFO] [stdout]     |                     ^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rest`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 117 |         [Token::IF, rest @ ..] => {
[INFO] [stdout]     |                          +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 117 -         [Token::IF, rest..] => {
[INFO] [stdout] 117 +         [Token::IF, std::ops::RangeFrom { start: rest }] => {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/parser.rs:118:40
[INFO] [stdout]     |
[INFO] [stdout] 118 |             let (exp, res) = parse_exp(rest)?;
[INFO] [stdout]     |                                        ^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `re` in this scope
[INFO] [stdout]    --> src/parser.rs:120:31
[INFO] [stdout]     |
[INFO] [stdout] 120 |                 [Token::THEN, re..] => {
[INFO] [stdout]     |                               ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `re`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 120 |                 [Token::THEN, re @ ..] => {
[INFO] [stdout]     |                                  +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 120 -                 [Token::THEN, re..] => {
[INFO] [stdout] 120 +                 [Token::THEN, std::ops::RangeFrom { start: re }] => {
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 120 |                 [Token::THEN, res..] => {
[INFO] [stdout]     |                                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/ast.rs:233:30
[INFO] [stdout]     |
[INFO] [stdout] 233 |         [TypeEquation(t1,t2),rest..] if t1 == t2 => {
[INFO] [stdout]     |                              ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/ast.rs:236:84
[INFO] [stdout]     |
[INFO] [stdout] 236 |         [TypeEquation(Type::Func(box f1_a,box f1_b),Type::Func(box f2_a,box f2_b)),rest..] => {
[INFO] [stdout]     |                                                                                    ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/ast.rs:240:45
[INFO] [stdout]     |
[INFO] [stdout] 240 |         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout]     |                                             ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `re` in this scope
[INFO] [stdout]    --> src/parser.rs:121:45
[INFO] [stdout]     |
[INFO] [stdout] 121 |                     let (ex, r) = parse_exp(re)?;
[INFO] [stdout]     |                                             ^^
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 121 |                     let (ex, r) = parse_exp(res)?;
[INFO] [stdout]     |                                               +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rr` in this scope
[INFO] [stdout]    --> src/parser.rs:123:39
[INFO] [stdout]     |
[INFO] [stdout] 123 |                         [Token::ELSE, rr..] => {
[INFO] [stdout]     |                                       ^^
[INFO] [stdout]     |
[INFO] [stdout]    --> /rustc/54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47/library/core/src/result.rs:566:4
[INFO] [stdout]     |
[INFO] [stdout]     = note: similarly named tuple variant `Err` defined here
[INFO] [stdout]     |
[INFO] [stdout]     = note: range patterns match against the start and end of a range; to bind the components, use a struct pattern
[INFO] [stdout] help: if you meant to collect the rest of the slice in `rr`, use the at operator
[INFO] [stdout]     |
[INFO] [stdout] 123 |                         [Token::ELSE, rr @ ..] => {
[INFO] [stdout]     |                                          +
[INFO] [stdout] help: if you meant to destructure a range use a struct pattern
[INFO] [stdout]     |
[INFO] [stdout] 123 -                         [Token::ELSE, rr..] => {
[INFO] [stdout] 123 +                         [Token::ELSE, std::ops::RangeFrom { start: rr }] => {
[INFO] [stdout]     |
[INFO] [stdout] help: a tuple variant with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 123 |                         [Token::ELSE, Err..] => {
[INFO] [stdout]     |                                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rr` in this scope
[INFO] [stdout]    --> src/parser.rs:124:54
[INFO] [stdout]     |
[INFO] [stdout] 124 | ...                   let (e, rrr) = parse_exp(rr)?;
[INFO] [stdout]     |                                                ^^
[INFO] [stdout]     |
[INFO] [stdout]    --> /rustc/54bb9bb1bbe87f59b5a2e9afea4c8cedcf5e0b47/library/core/src/result.rs:566:4
[INFO] [stdout]     |
[INFO] [stdout]     = note: similarly named tuple variant `Err` defined here
[INFO] [stdout] help: a tuple variant with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 124 |                             let (e, rrr) = parse_exp(Err)?;
[INFO] [stdout]     |                                                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `rest` in this scope
[INFO] [stdout]    --> src/parser.rs:130:42
[INFO] [stdout]     |
[INFO] [stdout] 130 |                 _ => Err(format!("{:?}", rest)),
[INFO] [stdout]     |                                          ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: a local variable with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 130 -                 _ => Err(format!("{:?}", rest)),
[INFO] [stdout] 130 +                 _ => Err(format!("{:?}", res)),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/ast.rs:240:91
[INFO] [stdout]     |
[INFO] [stdout] 240 |         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout]     |                                                                                           ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/ast.rs:233:30
[INFO] [stdout]     |
[INFO] [stdout] 233 |         [TypeEquation(t1,t2),rest..] if t1 == t2 => {
[INFO] [stdout]     |                              ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/ast.rs:236:84
[INFO] [stdout]     |
[INFO] [stdout] 236 |         [TypeEquation(Type::Func(box f1_a,box f1_b),Type::Func(box f2_a,box f2_b)),rest..] => {
[INFO] [stdout]     |                                                                                    ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/ast.rs:240:45
[INFO] [stdout]     |
[INFO] [stdout] 240 |         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout]     |                                             ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/lexer.rs:43:17
[INFO] [stdout]    |
[INFO] [stdout] 43 |         [first, rest..] => match first {
[INFO] [stdout]    |                 ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/ast.rs:240:91
[INFO] [stdout]     |
[INFO] [stdout] 240 |         [TypeEquation(Type::TypeVar(v),typ),rest..] | [TypeEquation(typ,Type::TypeVar(v)),rest..] => {
[INFO] [stdout]     |                                                                                           ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/lexer.rs:43:17
[INFO] [stdout]    |
[INFO] [stdout] 43 |         [first, rest..] => match first {
[INFO] [stdout]    |                 ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/lexer.rs:57:17
[INFO] [stdout]    |
[INFO] [stdout] 57 |         [first, rest..] if first.is_alphabetic() || first.is_numeric() || *first == '\'' => {
[INFO] [stdout]    |                 ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/lexer.rs:57:17
[INFO] [stdout]    |
[INFO] [stdout] 57 |         [first, rest..] if first.is_alphabetic() || first.is_numeric() || *first == '\'' => {
[INFO] [stdout]    |                 ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/lexer.rs:88:17
[INFO] [stdout]    |
[INFO] [stdout] 88 |         [first, rest..] => {
[INFO] [stdout]    |                 ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/lexer.rs:88:17
[INFO] [stdout]    |
[INFO] [stdout] 88 |         [first, rest..] => {
[INFO] [stdout]    |                 ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/lexer.rs:105:17
[INFO] [stdout]     |
[INFO] [stdout] 105 |         [first, rest..] => match first {
[INFO] [stdout]     |                 ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/lexer.rs:105:17
[INFO] [stdout]     |
[INFO] [stdout] 105 |         [first, rest..] => match first {
[INFO] [stdout]     |                 ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/lexer.rs:117:23
[INFO] [stdout]     |
[INFO] [stdout] 117 |                 ['>', res..] => (Token::RARROW, res),
[INFO] [stdout]     |                       ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/lexer.rs:117:23
[INFO] [stdout]     |
[INFO] [stdout] 117 |                 ['>', res..] => (Token::RARROW, res),
[INFO] [stdout]     |                       ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/lexer.rs:121:22
[INFO] [stdout]     |
[INFO] [stdout] 121 |                 [':',res..] => (Token::JOINER, res),
[INFO] [stdout]     |                      ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/lexer.rs:121:22
[INFO] [stdout]     |
[INFO] [stdout] 121 |                 [':',res..] => (Token::JOINER, res),
[INFO] [stdout]     |                      ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:19:23
[INFO] [stdout]    |
[INFO] [stdout] 19 |         [Token::PLUS, res..] => {
[INFO] [stdout]    |                       ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:19:23
[INFO] [stdout]    |
[INFO] [stdout] 19 |         [Token::PLUS, res..] => {
[INFO] [stdout]    |                       ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:23:51
[INFO] [stdout]    |
[INFO] [stdout] 23 |         [Token::LET, Token::VAR(s), Token::EQUAL, rest..] => parse_exp(rest),
[INFO] [stdout]    |                                                   ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:23:51
[INFO] [stdout]    |
[INFO] [stdout] 23 |         [Token::LET, Token::VAR(s), Token::EQUAL, rest..] => parse_exp(rest),
[INFO] [stdout]    |                                                   ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:24:23
[INFO] [stdout]    |
[INFO] [stdout] 24 |         [Token::RPAR, res..] => Ok((exp, rest)),
[INFO] [stdout]    |                       ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:25:21
[INFO] [stdout]    |
[INFO] [stdout] 25 |         [Token::IN, res..] => Ok((exp, rest)),
[INFO] [stdout]    |                     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:24:23
[INFO] [stdout]    |
[INFO] [stdout] 24 |         [Token::RPAR, res..] => Ok((exp, rest)),
[INFO] [stdout]    |                       ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:33:21
[INFO] [stdout]    |
[INFO] [stdout] 33 |         [Token::LT, res..] => {
[INFO] [stdout]    |                     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:37:23
[INFO] [stdout]    |
[INFO] [stdout] 37 |         [Token::EQUAL,res..] => {
[INFO] [stdout]    |                       ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:41:23
[INFO] [stdout]    |
[INFO] [stdout] 41 |         [Token::MINUS,res..] => {
[INFO] [stdout]    |                       ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:51:23
[INFO] [stdout]    |
[INFO] [stdout] 51 |         [Token::LPAR, rest..] => {
[INFO] [stdout]    |                       ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:54:31
[INFO] [stdout]    |
[INFO] [stdout] 54 |                 [Token::RPAR, re..] => Ok((exp, re)),
[INFO] [stdout]    |                               ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:25:21
[INFO] [stdout]    |
[INFO] [stdout] 25 |         [Token::IN, res..] => Ok((exp, rest)),
[INFO] [stdout]    |                     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:58:25
[INFO] [stdout]    |
[INFO] [stdout] 58 |         [Token::INT(i), rest..] => Ok((Exp::Int(*i), rest)),
[INFO] [stdout]    |                         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:59:25
[INFO] [stdout]    |
[INFO] [stdout] 59 |         [Token::VAR(s), rest..] => Ok((Exp::Var(s.clone()), rest)),
[INFO] [stdout]    |                         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:60:23
[INFO] [stdout]    |
[INFO] [stdout] 60 |         [Token::TRUE, rest..] => Ok((Exp::Bool(true), rest)),
[INFO] [stdout]    |                       ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:61:24
[INFO] [stdout]    |
[INFO] [stdout] 61 |         [Token::FALSE, rest..] => Ok((Exp::Bool(false), rest)),
[INFO] [stdout]    |                        ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:33:21
[INFO] [stdout]    |
[INFO] [stdout] 33 |         [Token::LT, res..] => {
[INFO] [stdout]    |                     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:62:34
[INFO] [stdout]    |
[INFO] [stdout] 62 |         [Token::LET, Token::REC, rest..] => parse_let_rec(tokens),
[INFO] [stdout]    |                                  ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:37:23
[INFO] [stdout]    |
[INFO] [stdout] 37 |         [Token::EQUAL,res..] => {
[INFO] [stdout]    |                       ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:41:23
[INFO] [stdout]    |
[INFO] [stdout] 41 |         [Token::MINUS,res..] => {
[INFO] [stdout]    |                       ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:51:23
[INFO] [stdout]    |
[INFO] [stdout] 51 |         [Token::LPAR, rest..] => {
[INFO] [stdout]    |                       ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:54:31
[INFO] [stdout]    |
[INFO] [stdout] 54 |                 [Token::RPAR, re..] => Ok((exp, re)),
[INFO] [stdout]    |                               ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:58:25
[INFO] [stdout]    |
[INFO] [stdout] 58 |         [Token::INT(i), rest..] => Ok((Exp::Int(*i), rest)),
[INFO] [stdout]    |                         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:59:25
[INFO] [stdout]    |
[INFO] [stdout] 59 |         [Token::VAR(s), rest..] => Ok((Exp::Var(s.clone()), rest)),
[INFO] [stdout]    |                         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:63:21
[INFO] [stdout]    |
[INFO] [stdout] 63 |         [Token::IF, rest..] => parse_if(tokens),
[INFO] [stdout]    |                     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:64:27
[INFO] [stdout]    |
[INFO] [stdout] 64 |         [Token::FUNCTION, rest..] => parse_fun(tokens),
[INFO] [stdout]    |                           ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:60:23
[INFO] [stdout]    |
[INFO] [stdout] 60 |         [Token::TRUE, rest..] => Ok((Exp::Bool(true), rest)),
[INFO] [stdout]    |                       ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:74:57
[INFO] [stdout]    |
[INFO] [stdout] 74 |         [Token::FUNCTION, Token::VAR(s), Token::RARROW, rest..] => {
[INFO] [stdout]    |                                                         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:61:24
[INFO] [stdout]    |
[INFO] [stdout] 61 |         [Token::FALSE, rest..] => Ok((Exp::Bool(false), rest)),
[INFO] [stdout]    |                        ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:84:57
[INFO] [stdout]    |
[INFO] [stdout] 84 |         [Token::FUNCTION, Token::VAR(s), Token::RARROW, rest..] => {
[INFO] [stdout]    |                                                         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:62:34
[INFO] [stdout]    |
[INFO] [stdout] 62 |         [Token::LET, Token::REC, rest..] => parse_let_rec(tokens),
[INFO] [stdout]    |                                  ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:94:63
[INFO] [stdout]    |
[INFO] [stdout] 94 |         [Token::LET, Token::REC, Token::VAR(s), Token::EQUAL, rest..] => {
[INFO] [stdout]    |                                                               ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:63:21
[INFO] [stdout]    |
[INFO] [stdout] 63 |         [Token::IF, rest..] => parse_if(tokens),
[INFO] [stdout]    |                     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:97:29
[INFO] [stdout]    |
[INFO] [stdout] 97 |                 [Token::IN, re..] => {
[INFO] [stdout]    |                             ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/parser.rs:117:21
[INFO] [stdout]     |
[INFO] [stdout] 117 |         [Token::IF, rest..] => {
[INFO] [stdout]     |                     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:64:27
[INFO] [stdout]    |
[INFO] [stdout] 64 |         [Token::FUNCTION, rest..] => parse_fun(tokens),
[INFO] [stdout]    |                           ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/parser.rs:120:31
[INFO] [stdout]     |
[INFO] [stdout] 120 |                 [Token::THEN, re..] => {
[INFO] [stdout]     |                               ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/parser.rs:123:39
[INFO] [stdout]     |
[INFO] [stdout] 123 |                         [Token::ELSE, rr..] => {
[INFO] [stdout]     |                                       ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:74:57
[INFO] [stdout]    |
[INFO] [stdout] 74 |         [Token::FUNCTION, Token::VAR(s), Token::RARROW, rest..] => {
[INFO] [stdout]    |                                                         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Op` and `unify`
[INFO] [stdout]  --> src/main.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use ast::{Exp,Op,TEnv,unify};
[INFO] [stdout]   |               ^^      ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:84:57
[INFO] [stdout]    |
[INFO] [stdout] 84 |         [Token::FUNCTION, Token::VAR(s), Token::RARROW, rest..] => {
[INFO] [stdout]    |                                                         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:94:63
[INFO] [stdout]    |
[INFO] [stdout] 94 |         [Token::LET, Token::REC, Token::VAR(s), Token::EQUAL, rest..] => {
[INFO] [stdout]    |                                                               ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]   --> src/parser.rs:97:29
[INFO] [stdout]    |
[INFO] [stdout] 97 |                 [Token::IN, re..] => {
[INFO] [stdout]    |                             ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]    = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]    = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/parser.rs:117:21
[INFO] [stdout]     |
[INFO] [stdout] 117 |         [Token::IF, rest..] => {
[INFO] [stdout]     |                     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/parser.rs:120:31
[INFO] [stdout]     |
[INFO] [stdout] 120 |                 [Token::THEN, re..] => {
[INFO] [stdout]     |                               ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: `X..` patterns in slices are experimental
[INFO] [stdout]    --> src/parser.rs:123:39
[INFO] [stdout]     |
[INFO] [stdout] 123 |                         [Token::ELSE, rr..] => {
[INFO] [stdout]     |                                       ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information
[INFO] [stdout]     = help: add `#![feature(half_open_range_patterns_in_slices)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-02-24; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Op` and `unify`
[INFO] [stdout]  --> src/main.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use ast::{Exp,Op,TEnv,unify};
[INFO] [stdout]   |               ^^      ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `slice_patterns` has been stable since 1.42.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/main.rs:1:36
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(box_patterns,box_syntax,slice_patterns)]
[INFO] [stdout]   |                                    ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `slice_patterns` has been stable since 1.42.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/main.rs:1:36
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(box_patterns,box_syntax,slice_patterns)]
[INFO] [stdout]   |                                    ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0029]: only `char` and numeric types are allowed in range patterns
[INFO] [stdout]   --> src/parser.rs:23:51
[INFO] [stdout]    |
[INFO] [stdout] 23 |         [Token::LET, Token::VAR(s), Token::EQUAL, rest..] => parse_exp(rest),
[INFO] [stdout]    |                                                   ^^^^ this is of type `&[Token]` but it should be `char` or numeric
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0029]: only `char` and numeric types are allowed in range patterns
[INFO] [stdout]   --> src/parser.rs:23:51
[INFO] [stdout]    |
[INFO] [stdout] 23 |         [Token::LET, Token::VAR(s), Token::EQUAL, rest..] => parse_exp(rest),
[INFO] [stdout]    |                                                   ^^^^ this is of type `&[Token]` but it should be `char` or numeric
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `type_inference` (bin "type_inference") due to 169 previous errors; 3 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/ast.rs:219:13
[INFO] [stdout]     |
[INFO] [stdout] 218 |             TypeEquation(t1,t2) => TypeEquation(t1.assign_type_eq(typ_var_name,typ),t2.assign_type_eq(typ_var_name,typ)),
[INFO] [stdout]     |             ------------------- matches any value
[INFO] [stdout] 219 |             _ => a.clone()
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/ast.rs:219:13
[INFO] [stdout]     |
[INFO] [stdout] 218 |             TypeEquation(t1,t2) => TypeEquation(t1.assign_type_eq(typ_var_name,typ),t2.assign_type_eq(typ_var_name,typ)),
[INFO] [stdout]     |             ------------------- matches any value
[INFO] [stdout] 219 |             _ => a.clone()
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0029, E0425, E0557, E0658.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0029`.
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0029, E0425, E0557, E0658.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0029`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `type_inference` (bin "type_inference" test) due to 169 previous errors; 3 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "7cf8ba8081dd0408a1651ce04e53e5a5bf2e08952ea45d84cd0ee234fdae818e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7cf8ba8081dd0408a1651ce04e53e5a5bf2e08952ea45d84cd0ee234fdae818e", kill_on_drop: false }`
[INFO] [stdout] 7cf8ba8081dd0408a1651ce04e53e5a5bf2e08952ea45d84cd0ee234fdae818e
