[INFO] cloning repository https://github.com/rickmugridge/prolog-interpreter
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/rickmugridge/prolog-interpreter" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frickmugridge%2Fprolog-interpreter", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frickmugridge%2Fprolog-interpreter'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 2bb03d172debe15bdffb2c51b2972f0e0b860e04
[INFO] testing rickmugridge/prolog-interpreter against beta-2025-10-28 for beta-1.92-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frickmugridge%2Fprolog-interpreter" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/rickmugridge/prolog-interpreter
[INFO] finished tweaking git repo https://github.com/rickmugridge/prolog-interpreter
[INFO] tweaked toml for git repo https://github.com/rickmugridge/prolog-interpreter written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/rickmugridge/prolog-interpreter on toolchain beta-2025-10-28
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2025-10-28" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/rickmugridge/prolog-interpreter 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" "+beta-2025-10-28" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-10-28" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c3c1c835058dff9c0f9387566c4fc41cee8761a3228f5445171b5a588c73d47a
[INFO] running `Command { std: "docker" "start" "-a" "c3c1c835058dff9c0f9387566c4fc41cee8761a3228f5445171b5a588c73d47a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c3c1c835058dff9c0f9387566c4fc41cee8761a3228f5445171b5a588c73d47a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c3c1c835058dff9c0f9387566c4fc41cee8761a3228f5445171b5a588c73d47a", kill_on_drop: false }`
[INFO] [stdout] c3c1c835058dff9c0f9387566c4fc41cee8761a3228f5445171b5a588c73d47a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-10-28" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] db07c30331ed51c4029451f3e136f85c1d7da23b288901eeb357f637ec9e23ac
[INFO] running `Command { std: "docker" "start" "-a" "db07c30331ed51c4029451f3e136f85c1d7da23b288901eeb357f637ec9e23ac", kill_on_drop: false }`
[INFO] [stderr]    Compiling prolog-interpreter v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: constant `LIST_COMPOUND` is never used
[INFO] [stdout]  --> src/term.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const LIST_COMPOUND: &str = "_list";
[INFO] [stdout]   |       ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EMPTY_LIST_COMPOUND` is never used
[INFO] [stdout]  --> src/term.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const EMPTY_LIST_COMPOUND: &str = "_emptyList";
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Term` is never used
[INFO] [stdout]   --> src/term.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum Term {
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/term.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Term {
[INFO] [stdout]    | --------- associated items in this implementation
[INFO] [stdout] 19 |     pub fn int(i: isize) -> Rc<Term> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn atom(s: &str) -> Rc<Term> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn compound1(functor: &str, argument: Rc<Term>) -> Rc<Term> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn compound(functor: &str, arguments: Vec<Rc<Term>>) -> Rc<Term> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn var(name: &str, bindings: Rc<Bindings>) -> Rc<Term> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn var_unnamed(bindings: Rc<Bindings>) -> Rc<Term> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn var_full(name: &str, i: isize) -> Rc<Term> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn empty_list() -> Rc<Term> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn list(head: Rc<Term>, tail: Rc<Term>) -> Rc<Term> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn make_list(list: Vec<Rc<Term>>) -> Rc<Term> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn contains_variables(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn find_distinct_variables(terms: Vec<Rc<Term>>) -> HashSet<Rc<Term>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     fn find_variables_set(term: Rc<Term>, set: &mut HashSet<Rc<Term>>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     fn fmt_list(args: &[Rc<Term>], f: &mut Formatter<'_>) -> std::fmt::Result {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Substitution` is never constructed
[INFO] [stdout]  --> src/substitution.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Substitution {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `substitute_new_vars`, `map`, and `map_clause` are never used
[INFO] [stdout]   --> src/substitution.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Substitution {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 13 |     pub fn new(variables_source: Rc<Bindings>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     fn substitute_new_vars(&self, term: Rc<Term>) -> Rc<Term> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     fn map(&self, term: Rc<Term>) -> Rc<Term> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn map_clause(&self, clause: Rc<Clause>) -> Rc<Clause> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TermBuilder` is never constructed
[INFO] [stdout]  --> src/term_builder.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct TermBuilder {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/term_builder.rs:36:12
[INFO] [stdout]     |
[INFO] [stdout]  35 | impl TermBuilder {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  36 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  62 |     pub fn bindings(&self) -> Rc<Bindings> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn bound_to(&self, term: Rc<Term>, bound_to: Rc<Term>) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn database(&self, clauses: Vec<Rc<Clause>>) -> Database {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn no_bindings(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn a(&self) -> Rc<Term> {
[INFO] [stdout]     |            ^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn b(&self) -> Rc<Term> {
[INFO] [stdout]     |            ^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn one(&self) -> Rc<Term> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn two(&self) -> Rc<Term> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn x(&self) -> Rc<Term> {
[INFO] [stdout]     |            ^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn y(&self) -> Rc<Term> {
[INFO] [stdout]     |            ^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn z(&self) -> Rc<Term> {
[INFO] [stdout]     |            ^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn u(&self) -> Rc<Term> {
[INFO] [stdout]     |            ^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn v(&self) -> Rc<Term> {
[INFO] [stdout]     |            ^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn fa(&self) -> Rc<Term> {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn fb(&self) -> Rc<Term> {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn faa(&self) -> Rc<Term> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn fab(&self) -> Rc<Term> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn fxy(&self) -> Rc<Term> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn fxx(&self) -> Rc<Term> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn fxa(&self) -> Rc<Term> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn ga(&self) -> Rc<Term> {
[INFO] [stdout]     |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Variable` is never constructed
[INFO] [stdout]  --> src/variable.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Variable(pub isize, pub Option<String>);
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new_named` and `new` are never used
[INFO] [stdout]   --> src/variable.rs:9:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl Variable {
[INFO] [stdout]    | ------------- associated functions in this implementation
[INFO] [stdout]  9 |     pub fn new_named(bindings: Rc<Bindings>, name: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub fn new(bindings: Rc<Bindings>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Clause` is never constructed
[INFO] [stdout]  --> src/clause.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Clause {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `rule` and `fact` are never used
[INFO] [stdout]   --> src/clause.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Clause {
[INFO] [stdout]    | ----------- associated functions in this implementation
[INFO] [stdout] 15 |     pub fn rule(head: Rc<Term>,
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn fact(head: Rc<Term>) -> Rc<Self> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Bindings` is never constructed
[INFO] [stdout]  --> src/bindings.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Bindings {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/bindings.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Bindings {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn len(&self) -> usize {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn instantiate(&self, term: Rc<Term>) -> Rc<Term> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn bound_directly_to(&self, variable: &Variable) -> Option<Rc<Term>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn term_bound_directly_to(&self, variable: Rc<Term>) -> Option<Rc<Term>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn add(&self, v: isize, term: Rc<Term>) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn add_variable(&self, variable: Rc<Term>, term: Rc<Term>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn stack(current: Rc<Bindings>) -> Rc<Self> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `next` are never used
[INFO] [stdout]   --> src/bindings.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | impl Bindings {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 80 |     pub fn new() -> Rc<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn next(&self) -> isize {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StaticContext` is never constructed
[INFO] [stdout]  --> src/static_context.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct StaticContext {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_all`, and `var` are never used
[INFO] [stdout]   --> src/static_context.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl StaticContext {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 13 |     pub fn new(bindings: Rc<Bindings>) -> Rc<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub fn new_all() -> Rc<Self> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn var(&self, name: &str) -> Rc<Term> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unify` is never used
[INFO] [stdout]  --> src/unify.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn unify(term1: Rc<Term>, term2: Rc<Term>, bindings: Rc<Bindings>) -> bool {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unify_variable` is never used
[INFO] [stdout]   --> src/unify.rs:31:4
[INFO] [stdout]    |
[INFO] [stdout] 31 | fn unify_variable(term1: Rc<Term>, term2: Rc<Term>, bindings: Rc<Bindings>) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Instantiation` is never constructed
[INFO] [stdout]   --> src/run.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Instantiation {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/run.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn run(query: Vec<Rc<Term>>, database: &Database, bindings: Rc<Bindings>) -> impl Iterator<Item=Instantiation> + '_ {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_query` is never used
[INFO] [stdout]   --> src/run.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn run_query(query: Rc<Term>,
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_body` is never used
[INFO] [stdout]   --> src/run.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn run_body<'a>(body: Vec<Rc<Term>>, database: &'a Database, bindings: Rc<Bindings>) -> Box<dyn Iterator<Item=Rc<Bindings>> + 'a> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `substitute` is never used
[INFO] [stdout]   --> src/run.rs:70:4
[INFO] [stdout]    |
[INFO] [stdout] 70 | fn substitute(clause: &Rc<Clause>, outer_bindings: Rc<Bindings>) -> Rc<Clause> {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `resolve_instantiations` is never used
[INFO] [stdout]   --> src/run.rs:75:4
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn resolve_instantiations(query_variables: &HashSet<Rc<Term>>, bindings: Rc<Bindings>) -> Instantiation {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Runner` is never constructed
[INFO] [stdout]  --> src/runner.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Runner {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `query` are never used
[INFO] [stdout]   --> src/runner.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Runner {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn new(src: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn query<'a>(&'a self, query_src: &'a str) -> impl Iterator<Item=Instantiation> + Sized + 'a {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Database` is never constructed
[INFO] [stdout]  --> src/database.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Database {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `matches`, and `matches_substituted` are never used
[INFO] [stdout]   --> src/database.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Database {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 12 |     // todo Organise terms around f/2, etc for faster lookup
[INFO] [stdout] 13 |     pub fn new(clauses: Vec<Rc<Clause>>, variables_source: Rc<Bindings>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub fn matches(&self) -> impl Iterator<Item=&Rc<Clause>> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn matches_substituted(&self) -> impl Iterator<Item=Rc<Clause>> + '_ {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Lex` is never used
[INFO] [stdout]  --> src/lex.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum Lex {
[INFO] [stdout]   |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lex` is never used
[INFO] [stdout]   --> src/lex.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn lex(src: String) -> Result<Vec<Lex>, String> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_number` is never used
[INFO] [stdout]    --> src/lex.rs:179:4
[INFO] [stdout]     |
[INFO] [stdout] 179 | fn parse_number(digit_string: String) -> Result<Lex, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `term_parser` is never used
[INFO] [stdout]  --> src/parse_term.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn term_parser(src: &str, static_context: Rc<StaticContext>) -> Result<Rc<Term>, String> {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_term` is never used
[INFO] [stdout]   --> src/parse_term.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn parse_term(tokens: &mut Peekable<Iter<Lex>>, src: &str, static_context: Rc<StaticContext>) -> Result<Rc<Term>, String> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_list` is never used
[INFO] [stdout]   --> src/parse_term.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn parse_list(tokens: &mut Peekable<Iter<Lex>>,
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_non_empty_list` is never used
[INFO] [stdout]   --> src/parse_term.rs:45:4
[INFO] [stdout]    |
[INFO] [stdout] 45 | fn parse_non_empty_list(tokens: &mut Peekable<Iter<Lex>>, src: &str, static_context: Rc<StaticContext>) -> Result<Rc<Term>, String> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_atom_or_compound` is never used
[INFO] [stdout]   --> src/parse_term.rs:72:4
[INFO] [stdout]    |
[INFO] [stdout] 72 | fn parse_atom_or_compound(name: &String,
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_arguments` is never used
[INFO] [stdout]   --> src/parse_term.rs:85:4
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn parse_arguments(tokens: &mut Peekable<Iter<Lex>>, src: &str, static_context: Rc<StaticContext>) -> Result<Vec<Rc<Term>>, String> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `remaining` is never used
[INFO] [stdout]    --> src/parse_term.rs:106:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn remaining(remainder: Vec<&Lex>) -> String {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clauses_parser` is never used
[INFO] [stdout]   --> src/parse_clauses.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn clauses_parser(src: &str, static_context: Rc<StaticContext>) -> Result<Vec<Rc<Clause>>, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_clauses` is never used
[INFO] [stdout]   --> src/parse_clauses.rs:22:4
[INFO] [stdout]    |
[INFO] [stdout] 22 | fn parse_clauses(tokens: &mut Peekable<Iter<Lex>>, src: &str, static_context: Rc<StaticContext>) -> Result<Vec<Rc<Clause>>, String> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_body` is never used
[INFO] [stdout]   --> src/parse_clauses.rs:44:4
[INFO] [stdout]    |
[INFO] [stdout] 44 | fn parse_body(tokens: &mut Peekable<Iter<Lex>>, src: &str, static_context: Rc<StaticContext>) -> Result<Vec<Rc<Term>>, String> {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_parser` is never used
[INFO] [stdout]   --> src/parse_clauses.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn query_parser(src: &str, static_context: Rc<StaticContext>) -> Result<Vec<Rc<Term>>, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_query` is never used
[INFO] [stdout]   --> src/parse_clauses.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn parse_query(tokens: &mut Peekable<Iter<Lex>>, src: &str, static_context: Rc<StaticContext>) -> Result<Vec<Rc<Term>>, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.48s
[INFO] running `Command { std: "docker" "inspect" "db07c30331ed51c4029451f3e136f85c1d7da23b288901eeb357f637ec9e23ac", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "db07c30331ed51c4029451f3e136f85c1d7da23b288901eeb357f637ec9e23ac", kill_on_drop: false }`
[INFO] [stdout] db07c30331ed51c4029451f3e136f85c1d7da23b288901eeb357f637ec9e23ac
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-10-28" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 95bb799d0740c7c046dfbe82bdd748f8a1d5229ba6303af99529718ccf953a7a
[INFO] running `Command { std: "docker" "start" "-a" "95bb799d0740c7c046dfbe82bdd748f8a1d5229ba6303af99529718ccf953a7a", kill_on_drop: false }`
[INFO] [stderr]    Compiling prolog-interpreter v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: field `substitution` is never read
[INFO] [stdout]  --> src/database.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Database {
[INFO] [stdout]   |            -------- field in this struct
[INFO] [stdout] 7 |     clauses: Vec<Rc<Clause>>,
[INFO] [stdout] 8 |     substitution: Rc<Substitution>,
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `matches_substituted` is never used
[INFO] [stdout]   --> src/database.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Database {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn matches_substituted(&self) -> impl Iterator<Item=Rc<Clause>> + '_ {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Boolean` is never constructed
[INFO] [stdout]   --> src/lex.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum Lex {
[INFO] [stdout]    |          --- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 10 |     Boolean(bool),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Lex` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_append__list_to_empty_list` should have a snake case name
[INFO] [stdout]    --> src/runner.rs:110:8
[INFO] [stdout]     |
[INFO] [stdout] 110 |     fn list_append__list_to_empty_list() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `list_append_list_to_empty_list`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.46s
[INFO] running `Command { std: "docker" "inspect" "95bb799d0740c7c046dfbe82bdd748f8a1d5229ba6303af99529718ccf953a7a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "95bb799d0740c7c046dfbe82bdd748f8a1d5229ba6303af99529718ccf953a7a", kill_on_drop: false }`
[INFO] [stdout] 95bb799d0740c7c046dfbe82bdd748f8a1d5229ba6303af99529718ccf953a7a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-10-28" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 5c1021041dca322268250e6bffe4221e3a578e31151f0bac55e437a26a3d502d
[INFO] running `Command { std: "docker" "start" "-a" "5c1021041dca322268250e6bffe4221e3a578e31151f0bac55e437a26a3d502d", kill_on_drop: false }`
[INFO] [stderr] warning: field `substitution` is never read
[INFO] [stderr]  --> src/database.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub struct Database {
[INFO] [stderr]   |            -------- field in this struct
[INFO] [stderr] 7 |     clauses: Vec<Rc<Clause>>,
[INFO] [stderr] 8 |     substitution: Rc<Substitution>,
[INFO] [stderr]   |     ^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `matches_substituted` is never used
[INFO] [stderr]   --> src/database.rs:21:12
[INFO] [stderr]    |
[INFO] [stderr] 11 | impl Database {
[INFO] [stderr]    | ------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 21 |     pub fn matches_substituted(&self) -> impl Iterator<Item=Rc<Clause>> + '_ {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `Boolean` is never constructed
[INFO] [stderr]   --> src/lex.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr]  4 | pub enum Lex {
[INFO] [stderr]    |          --- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 10 |     Boolean(bool),
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Lex` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: function `list_append__list_to_empty_list` should have a snake case name
[INFO] [stderr]    --> src/runner.rs:110:8
[INFO] [stderr]     |
[INFO] [stderr] 110 |     fn list_append__list_to_empty_list() {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `list_append_list_to_empty_list`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `prolog-interpreter` (bin "prolog-interpreter" test) generated 4 warnings
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.05s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/prolog_interpreter-cb687a190692ec00)
[INFO] [stdout] 
[INFO] [stdout] running 71 tests
[INFO] [stdout] test bindings::instantiation_tests::bound_variable ... ok
[INFO] [stdout] test bindings::instantiation_tests::bound_variable_chain_to_atom ... ok
[INFO] [stdout] test bindings::instantiation_tests::unbound_variable ... ok
[INFO] [stdout] test bindings::instantiation_tests::bound_variable_chain3_to_compound ... ok
[INFO] [stdout] test bindings::variable_binding_tests::bound_variable_chain_to_compound ... ok
[INFO] [stdout] test bindings::variable_binding_tests::bound_variable ... ok
[INFO] [stdout] test parse_clauses::tests::fact_clause_with_compound ... ok
[INFO] [stdout] test bindings::variable_binding_tests::bound_variable_chain_to_atom ... ok
[INFO] [stdout] test parse_term::tests::atom ... ok
[INFO] [stdout] test bindings::instantiation_tests::bound_variable_chain2_to_compound ... ok
[INFO] [stdout] test parse_term::tests::empty_list ... ok
[INFO] [stdout] test parse_term::tests::binary_compound ... ok
[INFO] [stdout] test parse_term::tests::integer ... ok
[INFO] [stdout] test parse_clauses::tests::fact_clause_with_atom ... ok
[INFO] [stdout] test parse_clauses::tests::interesting_rule ... ok
[INFO] [stdout] test parse_term::tests::binary_compound_x ... ok
[INFO] [stdout] test parse_term::tests::variable ... ok
[INFO] [stdout] test run::tests::double_match_with_variable ... ok
[INFO] [stdout] test run::tests::no ... ok
[INFO] [stdout] test run::tests::double_partial_match_variable ... ok
[INFO] [stdout] test parse_term::tests::list ... ok
[INFO] [stdout] test parse_term::tests::nested_compound ... ok
[INFO] [stdout] test parse_term::tests::nullary_compound ... ok
[INFO] [stdout] test run::tests::single_match_no_variables ... ok
[INFO] [stdout] test run::tests::one_step_rule_binding_x ... ok
[INFO] [stdout] test run::tests::single_match_with_variable ... ok
[INFO] [stdout] test run::tests::one_step_rule_binding_x_and_y ... ok
[INFO] [stdout] test runner::tests::list_append_empty_lists ... ok
[INFO] [stdout] test runner::tests::list_append_empty_list_to_list ... ok
[INFO] [stdout] test run::tests::double_match_variable ... ok
[INFO] [stdout] test parse_term::tests::bar_list ... ok
[INFO] [stdout] test parse_clauses::tests::several_rules_and_facts ... ok
[INFO] [stdout] test substitution::tests::just_atom ... ok
[INFO] [stdout] test substitution::tests::same_variable_twice ... ok
[INFO] [stdout] test term::test_contains_variable::compound ... ok
[INFO] [stdout] test runner::tests::list_append_generator ... ok
[INFO] [stdout] test substitution::tests::two_variables ... ok
[INFO] [stdout] test term::test_contains_variable::simple_ones ... ok
[INFO] [stdout] test term::test_display::bar_list ... ok
[INFO] [stdout] test term::test_display::bar_list2 ... ok
[INFO] [stdout] test term::test_display::compound ... ok
[INFO] [stdout] test runner::tests::two_outcomes ... ok
[INFO] [stdout] test term::test_display::empty_list ... ok
[INFO] [stdout] test substitution::tests::just_variable ... ok
[INFO] [stdout] test term::test_display::list ... ok
[INFO] [stdout] test term::test_find_distinct_variables::none ... ok
[INFO] [stdout] test unify::unify_tests::atoms ... ok
[INFO] [stdout] test term::test_find_distinct_variables::just_variable ... ok
[INFO] [stdout] test runner::tests::two_step ... ok
[INFO] [stdout] test tests::enable_suite ... ok
[INFO] [stdout] test unify::unify_tests::bind_multiple_variables ... ok
[INFO] [stdout] test unify::unify_tests::bind_multiple_variables_bidirectional ... ok
[INFO] [stdout] test lex::tests::double_quote ... ok
[INFO] [stdout] test term::test_display::simple_ones ... ok
[INFO] [stdout] test lex::tests::mixed ... ok
[INFO] [stdout] test runner::tests::list_append ... ok
[INFO] [stdout] test term::test_find_distinct_variables::compound_with_variables ... ok
[INFO] [stdout] test run::tests::two_variables ... ok
[INFO] [stdout] test runner::tests::list_append__list_to_empty_list ... ok
[INFO] [stdout] test unify::unify_tests::bind_one_level ... ok
[INFO] [stdout] test unify::unify_tests::bind_triple ... ok
[INFO] [stdout] test unify::unify_tests::failing_simple_unification ... ok
[INFO] [stdout] test unify::unify_tests::ints ... ok
[INFO] [stdout] test unify::unify_tests::variables_only ... ok
[INFO] [stdout] test unify::unify_variable_tests::var_and_atom ... ok
[INFO] [stdout] test unify::unify_variable_tests::var_and_atom_where_var_already_bound_to_that_atom ... ok
[INFO] [stdout] test unify::unify_variable_tests::var_and_different_var ... ok
[INFO] [stdout] test unify::unify_variable_tests::var_and_same_var ... ok
[INFO] [stdout] test unify::unify_tests::compounds ... ok
[INFO] [stdout] test unify::unify_tests::variable_to_atom ... ok
[INFO] [stdout] test unify::unify_variable_tests::var_and_atom_where_var_already_bound_to_other_atom ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 71 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "5c1021041dca322268250e6bffe4221e3a578e31151f0bac55e437a26a3d502d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5c1021041dca322268250e6bffe4221e3a578e31151f0bac55e437a26a3d502d", kill_on_drop: false }`
[INFO] [stdout] 5c1021041dca322268250e6bffe4221e3a578e31151f0bac55e437a26a3d502d
