[INFO] cloning repository https://github.com/devanbenz/simpledb-rs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/devanbenz/simpledb-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdevanbenz%2Fsimpledb-rs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdevanbenz%2Fsimpledb-rs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 9f3fca3cc52dfd3c91f01bee0ff3cdb724404f1d [INFO] checking devanbenz/simpledb-rs against master#350d0ef0ec0493e6d21cfb265cb8211a0e74d766 for pr-145342-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdevanbenz%2Fsimpledb-rs" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/devanbenz/simpledb-rs [INFO] finished tweaking git repo https://github.com/devanbenz/simpledb-rs [INFO] tweaked toml for git repo https://github.com/devanbenz/simpledb-rs written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/devanbenz/simpledb-rs on toolchain 350d0ef0ec0493e6d21cfb265cb8211a0e74d766 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+350d0ef0ec0493e6d21cfb265cb8211a0e74d766" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/devanbenz/simpledb-rs 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" "+350d0ef0ec0493e6d21cfb265cb8211a0e74d766" "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-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+350d0ef0ec0493e6d21cfb265cb8211a0e74d766" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] a5453300100e3083d5d21e3399edb56258b8914d70a7bf05b63b3d7c2a0c08d3 [INFO] running `Command { std: "docker" "start" "-a" "a5453300100e3083d5d21e3399edb56258b8914d70a7bf05b63b3d7c2a0c08d3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "a5453300100e3083d5d21e3399edb56258b8914d70a7bf05b63b3d7c2a0c08d3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a5453300100e3083d5d21e3399edb56258b8914d70a7bf05b63b3d7c2a0c08d3", kill_on_drop: false }` [INFO] [stdout] a5453300100e3083d5d21e3399edb56258b8914d70a7bf05b63b3d7c2a0c08d3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+350d0ef0ec0493e6d21cfb265cb8211a0e74d766" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 8faf39370983be1bd16778d79a7e761f7dd72b9f418f905b91f4849db77f7c1c [INFO] running `Command { std: "docker" "start" "-a" "8faf39370983be1bd16778d79a7e761f7dd72b9f418f905b91f4849db77f7c1c", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.169 [INFO] [stderr] Checking remove_dir_all v0.5.3 [INFO] [stderr] Checking log v0.4.27 [INFO] [stderr] Checking rand v0.4.6 [INFO] [stderr] Checking tempdir v0.3.7 [INFO] [stderr] Checking simpledb-rs v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] error[E0583]: file not found for module `concurrencymanager` [INFO] [stdout] --> src/lib.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | mod concurrencymanager; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: to create the module `concurrencymanager`, create file "src/concurrencymanager.rs" or "src/concurrencymanager/mod.rs" [INFO] [stdout] = note: if there is a `mod concurrencymanager` elsewhere in the crate already, import it with `use crate::...` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0583]: file not found for module `concurrencymanager` [INFO] [stdout] --> src/lib.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | mod concurrencymanager; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: to create the module `concurrencymanager`, create file "src/concurrencymanager.rs" or "src/concurrencymanager/mod.rs" [INFO] [stdout] = note: if there is a `mod concurrencymanager` elsewhere in the crate already, import it with `use crate::...` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0726]: implicit elided lifetime not allowed here [INFO] [stdout] --> src/logmanager.rs:13:6 [INFO] [stdout] | [INFO] [stdout] 13 | impl LogIterator { [INFO] [stdout] | ^^^^^^^^^^^ expected lifetime parameter [INFO] [stdout] | [INFO] [stdout] help: indicate the anonymous lifetime [INFO] [stdout] | [INFO] [stdout] 13 | impl LogIterator<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0726]: implicit elided lifetime not allowed here [INFO] [stdout] --> src/logmanager.rs:37:19 [INFO] [stdout] | [INFO] [stdout] 37 | impl Iterator for LogIterator { [INFO] [stdout] | ^^^^^^^^^^^ expected lifetime parameter [INFO] [stdout] | [INFO] [stdout] help: indicate the anonymous lifetime [INFO] [stdout] | [INFO] [stdout] 37 | impl Iterator for LogIterator<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0726]: implicit elided lifetime not allowed here [INFO] [stdout] --> src/recoverymanager.rs:19:6 [INFO] [stdout] | [INFO] [stdout] 19 | impl RecoveryManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^ expected lifetime parameter [INFO] [stdout] | [INFO] [stdout] help: indicate the anonymous lifetime [INFO] [stdout] | [INFO] [stdout] 19 | impl RecoveryManager<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0726]: implicit elided lifetime not allowed here [INFO] [stdout] --> src/transaction.rs:17:6 [INFO] [stdout] | [INFO] [stdout] 17 | impl BufferList { [INFO] [stdout] | ^^^^^^^^^^ expected lifetime parameter [INFO] [stdout] | [INFO] [stdout] help: indicate the anonymous lifetime [INFO] [stdout] | [INFO] [stdout] 17 | impl BufferList<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0106]: missing lifetime specifier [INFO] [stdout] --> src/transaction.rs:18:63 [INFO] [stdout] | [INFO] [stdout] 18 | pub fn new(buffer_manager: Rc>) -> BufferList { [INFO] [stdout] | ^^^^^^^^^^ expected named lifetime parameter [INFO] [stdout] | [INFO] [stdout] = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from [INFO] [stdout] help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`, or if you will only have owned values [INFO] [stdout] | [INFO] [stdout] 18 | pub fn new(buffer_manager: Rc>) -> BufferList<'static> { [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0726]: implicit elided lifetime not allowed here [INFO] [stdout] --> src/transaction.rs:67:6 [INFO] [stdout] | [INFO] [stdout] 67 | impl Transaction { [INFO] [stdout] | ^^^^^^^^^^^ expected lifetime parameter [INFO] [stdout] | [INFO] [stdout] help: indicate the anonymous lifetime [INFO] [stdout] | [INFO] [stdout] 67 | impl Transaction<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> src/filemanager.rs:350:9 [INFO] [stdout] | [INFO] [stdout] 350 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tempdir::TempDir` [INFO] [stdout] --> src/filemanager.rs:351:9 [INFO] [stdout] | [INFO] [stdout] 351 | use tempdir::TempDir; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> src/logmanager.rs:194:9 [INFO] [stdout] | [INFO] [stdout] 194 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::rc::Rc` [INFO] [stdout] --> src/logmanager.rs:195:9 [INFO] [stdout] | [INFO] [stdout] 195 | use std::rc::Rc; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tempdir::TempDir` [INFO] [stdout] --> src/logmanager.rs:196:9 [INFO] [stdout] | [INFO] [stdout] 196 | use tempdir::TempDir; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::filemanager::Page` [INFO] [stdout] --> src/recoverymanager.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::filemanager::Page; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `LogIterator` [INFO] [stdout] --> src/recoverymanager.rs:3:25 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::logmanager::{LogIterator, LogManager}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Ref` [INFO] [stdout] --> src/transaction.rs:7:17 [INFO] [stdout] | [INFO] [stdout] 7 | use std::cell::{Ref, RefCell}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HashSet` [INFO] [stdout] --> src/transaction.rs:8:33 [INFO] [stdout] | [INFO] [stdout] 8 | use std::collections::{HashMap, HashSet}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0726]: implicit elided lifetime not allowed here [INFO] [stdout] --> src/logmanager.rs:13:6 [INFO] [stdout] | [INFO] [stdout] 13 | impl LogIterator { [INFO] [stdout] | ^^^^^^^^^^^ expected lifetime parameter [INFO] [stdout] | [INFO] [stdout] help: indicate the anonymous lifetime [INFO] [stdout] | [INFO] [stdout] 13 | impl LogIterator<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0726]: implicit elided lifetime not allowed here [INFO] [stdout] --> src/logmanager.rs:37:19 [INFO] [stdout] | [INFO] [stdout] 37 | impl Iterator for LogIterator { [INFO] [stdout] | ^^^^^^^^^^^ expected lifetime parameter [INFO] [stdout] | [INFO] [stdout] help: indicate the anonymous lifetime [INFO] [stdout] | [INFO] [stdout] 37 | impl Iterator for LogIterator<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0726]: implicit elided lifetime not allowed here [INFO] [stdout] --> src/recoverymanager.rs:19:6 [INFO] [stdout] | [INFO] [stdout] 19 | impl RecoveryManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^ expected lifetime parameter [INFO] [stdout] | [INFO] [stdout] help: indicate the anonymous lifetime [INFO] [stdout] | [INFO] [stdout] 19 | impl RecoveryManager<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0726]: implicit elided lifetime not allowed here [INFO] [stdout] --> src/transaction.rs:17:6 [INFO] [stdout] | [INFO] [stdout] 17 | impl BufferList { [INFO] [stdout] | ^^^^^^^^^^ expected lifetime parameter [INFO] [stdout] | [INFO] [stdout] help: indicate the anonymous lifetime [INFO] [stdout] | [INFO] [stdout] 17 | impl BufferList<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0106]: missing lifetime specifier [INFO] [stdout] --> src/transaction.rs:18:63 [INFO] [stdout] | [INFO] [stdout] 18 | pub fn new(buffer_manager: Rc>) -> BufferList { [INFO] [stdout] | ^^^^^^^^^^ expected named lifetime parameter [INFO] [stdout] | [INFO] [stdout] = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from [INFO] [stdout] help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`, or if you will only have owned values [INFO] [stdout] | [INFO] [stdout] 18 | pub fn new(buffer_manager: Rc>) -> BufferList<'static> { [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0726]: implicit elided lifetime not allowed here [INFO] [stdout] --> src/transaction.rs:67:6 [INFO] [stdout] | [INFO] [stdout] 67 | impl Transaction { [INFO] [stdout] | ^^^^^^^^^^^ expected lifetime parameter [INFO] [stdout] | [INFO] [stdout] help: indicate the anonymous lifetime [INFO] [stdout] | [INFO] [stdout] 67 | impl Transaction<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::filemanager::Page` [INFO] [stdout] --> src/recoverymanager.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::filemanager::Page; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `LogIterator` [INFO] [stdout] --> src/recoverymanager.rs:3:25 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::logmanager::{LogIterator, LogManager}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Ref` [INFO] [stdout] --> src/transaction.rs:7:17 [INFO] [stdout] | [INFO] [stdout] 7 | use std::cell::{Ref, RefCell}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HashSet` [INFO] [stdout] --> src/transaction.rs:8:33 [INFO] [stdout] | [INFO] [stdout] 8 | use std::collections::{HashMap, HashSet}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0072]: recursive types `RecoveryManager` and `Transaction` have infinite size [INFO] [stdout] --> src/recoverymanager.rs:12:1 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct RecoveryManager<'a> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 15 | transaction: Transaction<'a>, [INFO] [stdout] | --------------- recursive without indirection [INFO] [stdout] | [INFO] [stdout] ::: src/transaction.rs:59:1 [INFO] [stdout] | [INFO] [stdout] 59 | pub struct Transaction<'a> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | recovery_manager: RecoveryManager<'a>, [INFO] [stdout] | ------------------- recursive without indirection [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0072]: recursive types `RecoveryManager` and `Transaction` have infinite size [INFO] [stdout] --> src/recoverymanager.rs:12:1 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct RecoveryManager<'a> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 15 | transaction: Transaction<'a>, [INFO] [stdout] | --------------- recursive without indirection [INFO] [stdout] | [INFO] [stdout] ::: src/transaction.rs:59:1 [INFO] [stdout] | [INFO] [stdout] 59 | pub struct Transaction<'a> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | recovery_manager: RecoveryManager<'a>, [INFO] [stdout] | ------------------- recursive without indirection [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:41:60 [INFO] [stdout] | [INFO] [stdout] 41 | pub fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: you might have meant to use `Self` to refer to the implementing type [INFO] [stdout] | [INFO] [stdout] 41 - pub fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] 41 + pub fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:41:60 [INFO] [stdout] | [INFO] [stdout] 41 | pub fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: you might have meant to use `Self` to refer to the implementing type [INFO] [stdout] | [INFO] [stdout] 41 - pub fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] 41 + pub fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:23:56 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: you might have meant to use `Self` to refer to the implementing type [INFO] [stdout] | [INFO] [stdout] 23 - fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] 23 + fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:23:56 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: you might have meant to use `Self` to refer to the implementing type [INFO] [stdout] | [INFO] [stdout] 23 - fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] 23 + fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:27:27 [INFO] [stdout] | [INFO] [stdout] 27 | CHECKPOINT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:27:27 [INFO] [stdout] | [INFO] [stdout] 27 | CHECKPOINT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:28:22 [INFO] [stdout] | [INFO] [stdout] 28 | START => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:28:22 [INFO] [stdout] | [INFO] [stdout] 28 | START => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:29:23 [INFO] [stdout] | [INFO] [stdout] 29 | COMMIT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:29:23 [INFO] [stdout] | [INFO] [stdout] 29 | COMMIT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:30:25 [INFO] [stdout] | [INFO] [stdout] 30 | ROLLBACK => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:30:25 [INFO] [stdout] | [INFO] [stdout] 30 | ROLLBACK => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:31:23 [INFO] [stdout] | [INFO] [stdout] 31 | SETINT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:31:23 [INFO] [stdout] | [INFO] [stdout] 31 | SETINT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:32:26 [INFO] [stdout] | [INFO] [stdout] 32 | SETSTRING => Some(Box::new(SetStringLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:32:26 [INFO] [stdout] | [INFO] [stdout] 32 | SETSTRING => Some(Box::new(SetStringLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:33:18 [INFO] [stdout] | [INFO] [stdout] 33 | _ => None, [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:45:27 [INFO] [stdout] | [INFO] [stdout] 45 | CHECKPOINT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:45:27 [INFO] [stdout] | [INFO] [stdout] 45 | CHECKPOINT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:46:22 [INFO] [stdout] | [INFO] [stdout] 46 | START => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:46:22 [INFO] [stdout] | [INFO] [stdout] 46 | START => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:47:23 [INFO] [stdout] | [INFO] [stdout] 47 | COMMIT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:47:23 [INFO] [stdout] | [INFO] [stdout] 47 | COMMIT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:48:25 [INFO] [stdout] | [INFO] [stdout] 48 | ROLLBACK => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:48:25 [INFO] [stdout] | [INFO] [stdout] 48 | ROLLBACK => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:49:23 [INFO] [stdout] | [INFO] [stdout] 49 | SETINT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:49:23 [INFO] [stdout] | [INFO] [stdout] 49 | SETINT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:50:26 [INFO] [stdout] | [INFO] [stdout] 50 | SETSTRING => Some(Box::new(SetStringLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:50:26 [INFO] [stdout] | [INFO] [stdout] 50 | SETSTRING => Some(Box::new(SetStringLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:51:18 [INFO] [stdout] | [INFO] [stdout] 51 | _ => None, [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/recoverymanager.rs:104:32 [INFO] [stdout] | [INFO] [stdout] 104 | if let Some(rec) = LogRecordFactory::create_log_record(b.to_vec()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] --> src/logrecord.rs:23:26 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] --> src/logrecord.rs:23:71 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/recoverymanager.rs:118:32 [INFO] [stdout] | [INFO] [stdout] 118 | if let Some(rec) = LogRecordFactory::create_log_record(b.to_vec()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] --> src/logrecord.rs:23:26 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] --> src/logrecord.rs:23:71 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/recoverymanager.rs:123:21 [INFO] [stdout] | [INFO] [stdout] 123 | finished_txns.push(rec); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] --> src/logrecord.rs:23:26 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] --> src/logrecord.rs:23:71 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/recoverymanager.rs:115:33 [INFO] [stdout] | [INFO] [stdout] 115 | let mut finished_txns = Vec::new(); [INFO] [stdout] | ^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] --> src/logrecord.rs:23:26 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] --> src/logrecord.rs:23:71 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/recoverymanager.rs:124:28 [INFO] [stdout] | [INFO] [stdout] 124 | } else if !finished_txns.contains(&rec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] --> src/logrecord.rs:23:26 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] --> src/logrecord.rs:23:71 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: can't compare `dyn LogRecord` with `dyn LogRecord` [INFO] [stdout] --> src/recoverymanager.rs:124:42 [INFO] [stdout] | [INFO] [stdout] 124 | } else if !finished_txns.contains(&rec) { [INFO] [stdout] | ^^^^^^^^ no implementation for `dyn LogRecord == dyn LogRecord` [INFO] [stdout] | [INFO] [stdout] = help: the trait `PartialEq` is not implemented for `dyn LogRecord` [INFO] [stdout] = note: required for `Box` to implement `PartialEq` [INFO] [stdout] note: required by a bound in `core::slice::::contains` [INFO] [stdout] --> /rustc/350d0ef0ec0493e6d21cfb265cb8211a0e74d766/library/core/src/slice/mod.rs:2583:5 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `Self` constructor can only be used with tuple or unit structs [INFO] [stdout] --> src/transaction.rs:73:53 [INFO] [stdout] | [INFO] [stdout] 73 | let recovery_manager = RecoveryManager::new(Self, 0, log_manager, buffer_manager.clone()); [INFO] [stdout] | ^^^^ help: use curly brackets: `Self { /* fields */ }` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:27:27 [INFO] [stdout] | [INFO] [stdout] 27 | CHECKPOINT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:27:27 [INFO] [stdout] | [INFO] [stdout] 27 | CHECKPOINT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:28:22 [INFO] [stdout] | [INFO] [stdout] 28 | START => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:28:22 [INFO] [stdout] | [INFO] [stdout] 28 | START => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:29:23 [INFO] [stdout] | [INFO] [stdout] 29 | COMMIT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:29:23 [INFO] [stdout] | [INFO] [stdout] 29 | COMMIT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:30:25 [INFO] [stdout] | [INFO] [stdout] 30 | ROLLBACK => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:30:25 [INFO] [stdout] | [INFO] [stdout] 30 | ROLLBACK => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/transaction.rs:94:43 [INFO] [stdout] | [INFO] [stdout] 94 | pub fn get_int(&self, offset: i32) -> Option {} [INFO] [stdout] | ------- ^^^^^^^^^^^ expected `Option`, found `()` [INFO] [stdout] | | [INFO] [stdout] | implicitly returns `()` as its body has no tail or `return` expression [INFO] [stdout] | [INFO] [stdout] = note: expected enum `Option` [INFO] [stdout] found unit type `()` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/transaction.rs:96:68 [INFO] [stdout] | [INFO] [stdout] 96 | pub fn get_string(&self, block_id: &BlockId, offset: usize) -> Option {} [INFO] [stdout] | ---------- ^^^^^^^^^^^^^^ expected `Option`, found `()` [INFO] [stdout] | | [INFO] [stdout] | implicitly returns `()` as its body has no tail or `return` expression [INFO] [stdout] | [INFO] [stdout] = note: expected enum `Option` [INFO] [stdout] found unit type `()` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/transaction.rs:110:40 [INFO] [stdout] | [INFO] [stdout] 110 | pub fn available_buffers(&self) -> Option {} [INFO] [stdout] | ----------------- ^^^^^^^^^^^^^ expected `Option`, found `()` [INFO] [stdout] | | [INFO] [stdout] | implicitly returns `()` as its body has no tail or `return` expression [INFO] [stdout] | [INFO] [stdout] = note: expected enum `Option` [INFO] [stdout] found unit type `()` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/transaction.rs:112:22 [INFO] [stdout] | [INFO] [stdout] 112 | pub fn size() -> usize {} [INFO] [stdout] | ---- ^^^^^ expected `usize`, found `()` [INFO] [stdout] | | [INFO] [stdout] | implicitly returns `()` as its body has no tail or `return` expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/transaction.rs:114:24 [INFO] [stdout] | [INFO] [stdout] 114 | pub fn append() -> BlockId {} [INFO] [stdout] | ------ ^^^^^^^ expected `BlockId`, found `()` [INFO] [stdout] | | [INFO] [stdout] | implicitly returns `()` as its body has no tail or `return` expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/transaction.rs:116:28 [INFO] [stdout] | [INFO] [stdout] 116 | pub fn block_size() -> usize {} [INFO] [stdout] | ---------- ^^^^^ expected `usize`, found `()` [INFO] [stdout] | | [INFO] [stdout] | implicitly returns `()` as its body has no tail or `return` expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:31:23 [INFO] [stdout] | [INFO] [stdout] 31 | SETINT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:31:23 [INFO] [stdout] | [INFO] [stdout] 31 | SETINT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:32:26 [INFO] [stdout] | [INFO] [stdout] 32 | SETSTRING => Some(Box::new(SetStringLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:32:26 [INFO] [stdout] | [INFO] [stdout] 32 | SETSTRING => Some(Box::new(SetStringLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:33:18 [INFO] [stdout] | [INFO] [stdout] 33 | _ => None, [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:45:27 [INFO] [stdout] | [INFO] [stdout] 45 | CHECKPOINT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:45:27 [INFO] [stdout] | [INFO] [stdout] 45 | CHECKPOINT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:46:22 [INFO] [stdout] | [INFO] [stdout] 46 | START => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:46:22 [INFO] [stdout] | [INFO] [stdout] 46 | START => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:47:23 [INFO] [stdout] | [INFO] [stdout] 47 | COMMIT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:47:23 [INFO] [stdout] | [INFO] [stdout] 47 | COMMIT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:48:25 [INFO] [stdout] | [INFO] [stdout] 48 | ROLLBACK => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:48:25 [INFO] [stdout] | [INFO] [stdout] 48 | ROLLBACK => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:49:23 [INFO] [stdout] | [INFO] [stdout] 49 | SETINT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:49:23 [INFO] [stdout] | [INFO] [stdout] 49 | SETINT => Some(Box::new(SetIntLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:50:26 [INFO] [stdout] | [INFO] [stdout] 50 | SETSTRING => Some(Box::new(SetStringLogRecord::new(page))), [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:50:26 [INFO] [stdout] | [INFO] [stdout] 50 | SETSTRING => Some(Box::new(SetStringLogRecord::new(page))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/logrecord.rs:51:18 [INFO] [stdout] | [INFO] [stdout] 51 | _ => None, [INFO] [stdout] | ^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/recoverymanager.rs:104:32 [INFO] [stdout] | [INFO] [stdout] 104 | if let Some(rec) = LogRecordFactory::create_log_record(b.to_vec()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] --> src/logrecord.rs:23:26 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] --> src/logrecord.rs:23:71 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/recoverymanager.rs:118:32 [INFO] [stdout] | [INFO] [stdout] 118 | if let Some(rec) = LogRecordFactory::create_log_record(b.to_vec()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] --> src/logrecord.rs:23:26 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] --> src/logrecord.rs:23:71 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/recoverymanager.rs:123:21 [INFO] [stdout] | [INFO] [stdout] 123 | finished_txns.push(rec); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] --> src/logrecord.rs:23:26 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] --> src/logrecord.rs:23:71 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/recoverymanager.rs:115:33 [INFO] [stdout] | [INFO] [stdout] 115 | let mut finished_txns = Vec::new(); [INFO] [stdout] | ^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] --> src/logrecord.rs:23:26 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] --> src/logrecord.rs:23:71 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `LogRecord` is not dyn compatible [INFO] [stdout] --> src/recoverymanager.rs:124:28 [INFO] [stdout] | [INFO] [stdout] 124 | } else if !finished_txns.contains(&rec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `LogRecord` is not dyn compatible [INFO] [stdout] | [INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable [INFO] [stdout] for more information, visit [INFO] [stdout] --> src/logrecord.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub trait LogRecord { [INFO] [stdout] | --------- this trait is not dyn compatible... [INFO] [stdout] ... [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ...because associated function `create_log_record` has no `self` parameter [INFO] [stdout] = help: the following types implement `LogRecord`: [INFO] [stdout] logrecord::SetStringLogRecord [INFO] [stdout] logrecord::SetIntLogRecord [INFO] [stdout] logrecord::CommitLogRecord [INFO] [stdout] consider defining an enum where each variant holds one of these types, [INFO] [stdout] implementing `LogRecord` for this new enum and using it instead [INFO] [stdout] help: consider turning `create_log_record` into a method by giving it a `&self` argument [INFO] [stdout] --> src/logrecord.rs:23:26 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(&self, bytes: Vec) -> Option> { [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `create_log_record` so it does not apply to trait objects [INFO] [stdout] --> src/logrecord.rs:23:71 [INFO] [stdout] | [INFO] [stdout] 23 | fn create_log_record(bytes: Vec) -> Option> where Self: Sized { [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: can't compare `dyn LogRecord` with `dyn LogRecord` [INFO] [stdout] --> src/recoverymanager.rs:124:42 [INFO] [stdout] | [INFO] [stdout] 124 | } else if !finished_txns.contains(&rec) { [INFO] [stdout] | ^^^^^^^^ no implementation for `dyn LogRecord == dyn LogRecord` [INFO] [stdout] | [INFO] [stdout] = help: the trait `PartialEq` is not implemented for `dyn LogRecord` [INFO] [stdout] = note: required for `Box` to implement `PartialEq` [INFO] [stdout] note: required by a bound in `core::slice::::contains` [INFO] [stdout] --> /rustc/350d0ef0ec0493e6d21cfb265cb8211a0e74d766/library/core/src/slice/mod.rs:2583:5 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `Self` constructor can only be used with tuple or unit structs [INFO] [stdout] --> src/transaction.rs:73:53 [INFO] [stdout] | [INFO] [stdout] 73 | let recovery_manager = RecoveryManager::new(Self, 0, log_manager, buffer_manager.clone()); [INFO] [stdout] | ^^^^ help: use curly brackets: `Self { /* fields */ }` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/transaction.rs:94:43 [INFO] [stdout] | [INFO] [stdout] 94 | pub fn get_int(&self, offset: i32) -> Option {} [INFO] [stdout] | ------- ^^^^^^^^^^^ expected `Option`, found `()` [INFO] [stdout] | | [INFO] [stdout] | implicitly returns `()` as its body has no tail or `return` expression [INFO] [stdout] | [INFO] [stdout] = note: expected enum `Option` [INFO] [stdout] found unit type `()` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/transaction.rs:96:68 [INFO] [stdout] | [INFO] [stdout] 96 | pub fn get_string(&self, block_id: &BlockId, offset: usize) -> Option {} [INFO] [stdout] | ---------- ^^^^^^^^^^^^^^ expected `Option`, found `()` [INFO] [stdout] | | [INFO] [stdout] | implicitly returns `()` as its body has no tail or `return` expression [INFO] [stdout] | [INFO] [stdout] = note: expected enum `Option` [INFO] [stdout] found unit type `()` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/transaction.rs:110:40 [INFO] [stdout] | [INFO] [stdout] 110 | pub fn available_buffers(&self) -> Option {} [INFO] [stdout] | ----------------- ^^^^^^^^^^^^^ expected `Option`, found `()` [INFO] [stdout] | | [INFO] [stdout] | implicitly returns `()` as its body has no tail or `return` expression [INFO] [stdout] | [INFO] [stdout] = note: expected enum `Option` [INFO] [stdout] found unit type `()` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/transaction.rs:112:22 [INFO] [stdout] | [INFO] [stdout] 112 | pub fn size() -> usize {} [INFO] [stdout] | ---- ^^^^^ expected `usize`, found `()` [INFO] [stdout] | | [INFO] [stdout] | implicitly returns `()` as its body has no tail or `return` expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/transaction.rs:114:24 [INFO] [stdout] | [INFO] [stdout] 114 | pub fn append() -> BlockId {} [INFO] [stdout] | ------ ^^^^^^^ expected `BlockId`, found `()` [INFO] [stdout] | | [INFO] [stdout] | implicitly returns `()` as its body has no tail or `return` expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/transaction.rs:116:28 [INFO] [stdout] | [INFO] [stdout] 116 | pub fn block_size() -> usize {} [INFO] [stdout] | ---------- ^^^^^ expected `usize`, found `()` [INFO] [stdout] | | [INFO] [stdout] | implicitly returns `()` as its body has no tail or `return` expression [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when computing drop-check constraints for `recoverymanager::RecoveryManager` [INFO] [stdout] --> src/recoverymanager.rs:12:1 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct RecoveryManager<'a> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires computing drop-check constraints for `transaction::Transaction`... [INFO] [stdout] --> src/transaction.rs:59:1 [INFO] [stdout] | [INFO] [stdout] 59 | pub struct Transaction<'a> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: ...which again requires computing drop-check constraints for `recoverymanager::RecoveryManager`, completing the cycle [INFO] [stdout] = note: cycle used when computing dropck types for `recoverymanager::RecoveryManager<'_>` [INFO] [stdout] = note: see https://rustc-dev-guide.rust-lang.org/overview.html#queries and https://rustc-dev-guide.rust-lang.org/query.html for more information [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0038, E0072, E0106, E0277, E0308, E0391, E0583, E0726. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0038`. [INFO] [stdout] [INFO] [stderr] error: could not compile `simpledb-rs` (lib) due to 50 previous errors; 9 warnings emitted [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] error[E0391]: cycle detected when computing drop-check constraints for `recoverymanager::RecoveryManager` [INFO] [stdout] --> src/recoverymanager.rs:12:1 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct RecoveryManager<'a> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires computing drop-check constraints for `transaction::Transaction`... [INFO] [stdout] --> src/transaction.rs:59:1 [INFO] [stdout] | [INFO] [stdout] 59 | pub struct Transaction<'a> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: ...which again requires computing drop-check constraints for `recoverymanager::RecoveryManager`, completing the cycle [INFO] [stdout] = note: cycle used when computing dropck types for `recoverymanager::RecoveryManager<'_>` [INFO] [stdout] = note: see https://rustc-dev-guide.rust-lang.org/overview.html#queries and https://rustc-dev-guide.rust-lang.org/query.html for more information [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0038, E0072, E0106, E0277, E0308, E0391, E0583, E0726. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0038`. [INFO] [stdout] [INFO] [stderr] error: could not compile `simpledb-rs` (lib test) due to 50 previous errors; 4 warnings emitted [INFO] running `Command { std: "docker" "inspect" "8faf39370983be1bd16778d79a7e761f7dd72b9f418f905b91f4849db77f7c1c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8faf39370983be1bd16778d79a7e761f7dd72b9f418f905b91f4849db77f7c1c", kill_on_drop: false }` [INFO] [stdout] 8faf39370983be1bd16778d79a7e761f7dd72b9f418f905b91f4849db77f7c1c