[INFO] cloning repository https://github.com/namba3/indicator
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/namba3/indicator" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnamba3%2Findicator", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnamba3%2Findicator'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c94b4c7ccd0fa5b301c7995670290855a017381b
[INFO] checking namba3/indicator against 52995a223f2919dd3e2e427231db90a257350ded for pr-129249-4
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnamba3%2Findicator" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/namba3/indicator
[INFO] removed 0 missing examples
[INFO] finished tweaking git repo https://github.com/namba3/indicator
[INFO] tweaked toml for git repo https://github.com/namba3/indicator written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/namba3/indicator on toolchain 52995a223f2919dd3e2e427231db90a257350ded
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/namba3/indicator 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" "+52995a223f2919dd3e2e427231db90a257350ded" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 8f8ad461e4b637e730405dc173c5665d6ee5a14bc26542a82601aa7d4fd9107f
[INFO] running `Command { std: "docker" "start" "8f8ad461e4b637e730405dc173c5665d6ee5a14bc26542a82601aa7d4fd9107f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8f8ad461e4b637e730405dc173c5665d6ee5a14bc26542a82601aa7d4fd9107f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8f8ad461e4b637e730405dc173c5665d6ee5a14bc26542a82601aa7d4fd9107f" "/opt/rustwide/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8f8ad461e4b637e730405dc173c5665d6ee5a14bc26542a82601aa7d4fd9107f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8f8ad461e4b637e730405dc173c5665d6ee5a14bc26542a82601aa7d4fd9107f" "/opt/rustwide/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.190
[INFO] [stderr]     Checking cpufeatures v0.3.1
[INFO] [stderr]    Compiling syn v3.0.6
[INFO] [stderr]     Checking indicator v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking chacha20 v0.10.2
[INFO] [stderr]     Checking getrandom v0.4.3
[INFO] [stderr]     Checking rand v0.10.3
[INFO] [stderr]    Compiling futures-macro v0.3.34
[INFO] [stderr]     Checking futures-util v0.3.34
[INFO] [stderr]     Checking futures-executor v0.3.34
[INFO] [stdout] error: useless conversion to the same type: `aroon_indicator::AroonIndicatorOutput`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/indicators/aroon_indicator.rs:151:5
[INFO] [stdout]     |
[INFO] [stdout] 151 | /     test_indicator! {
[INFO] [stdout] 152 | |         new: AroonIndicator::new(PERIOD),
[INFO] [stdout] 153 | |         inputs: INPUTS.iter().map(|x| x.price()),
[INFO] [stdout] 154 | |         outputs: OUTPUTS.iter().copied(),
[INFO] [stdout] ...   |
[INFO] [stdout] 170 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<aroon_indicator::AroonIndicatorOutput as Into<aroon_indicator::AroonIndicatorOutput>::into(val) to avoid triggering this lint
[INFO] [stdout]     = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `f64`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/indicators/aroon_oscillator.rs:73:5
[INFO] [stdout]     |
[INFO] [stdout]  73 | /     test_indicator! {
[INFO] [stdout]  74 | |         new: AroonOscillator::new(PERIOD),
[INFO] [stdout]  75 | |         inputs: INPUTS.iter().map(|x| x.price()),
[INFO] [stdout]  76 | |         outputs: OUTPUTS.iter().copied(),
[INFO] [stdout] ...   |
[INFO] [stdout]  92 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<f64 as Into<f64>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `bollinger_bands::BollingerBandsOutput`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/indicators/bollinger_bands.rs:155:5
[INFO] [stdout]     |
[INFO] [stdout] 155 | /     test_indicator! {
[INFO] [stdout] 156 | |         new: BollingerBands::new(PERIOD, MULTIPLIER),
[INFO] [stdout] 157 | |         inputs: INPUTS.iter().map(|x| x.price()),
[INFO] [stdout] 158 | |         outputs: OUTPUTS.iter().copied(),
[INFO] [stdout] ...   |
[INFO] [stdout] 174 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<bollinger_bands::BollingerBandsOutput as Into<bollinger_bands::BollingerBandsOutput>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `f64`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/indicators/ema.rs:87:5
[INFO] [stdout]     |
[INFO] [stdout]  87 | /     test_indicator! {
[INFO] [stdout]  88 | |         new: Ema::new(PERIOD),
[INFO] [stdout]  89 | |         inputs: INPUTS.iter().map(|x| x.price()),
[INFO] [stdout]  90 | |         outputs: OUTPUTS.iter().copied(),
[INFO] [stdout] ...   |
[INFO] [stdout] 106 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<f64 as Into<f64>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `macd::MacdOutput`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/indicators/macd.rs:153:5
[INFO] [stdout]     |
[INFO] [stdout] 153 | /     test_indicator! {
[INFO] [stdout] 154 | |         new: Macd::new(SHORT_PERIOD, LONG_PERIOD, SIGNAL_PERIOD),
[INFO] [stdout] 155 | |         inputs: INPUTS.iter().map(|x| x.price()),
[INFO] [stdout] 156 | |         outputs: OUTPUTS.iter().copied(),
[INFO] [stdout] ...   |
[INFO] [stdout] 178 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<macd::MacdOutput as Into<macd::MacdOutput>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `f64`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/indicators/max.rs:149:5
[INFO] [stdout]     |
[INFO] [stdout] 149 | /     test_indicator! {
[INFO] [stdout] 150 | |         new: Max::new(PERIOD),
[INFO] [stdout] 151 | |         inputs: INPUTS.iter().map(|x| x.price()),
[INFO] [stdout] 152 | |         outputs: OUTPUTS.iter().copied(),
[INFO] [stdout] ...   |
[INFO] [stdout] 168 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<f64 as Into<f64>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `usize`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/indicators/max_index.rs:169:5
[INFO] [stdout]     |
[INFO] [stdout] 169 | /     test_indicator! {
[INFO] [stdout] 170 | |         new: MaxIndex::new(PERIOD),
[INFO] [stdout] 171 | |         inputs: INPUTS.iter().map(|x| x.price()),
[INFO] [stdout] 172 | |         outputs: OUTPUTS.iter().copied(),
[INFO] [stdout] ...   |
[INFO] [stdout] 188 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<usize as Into<usize>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `f64`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/indicators/min.rs:149:5
[INFO] [stdout]     |
[INFO] [stdout] 149 | /     test_indicator! {
[INFO] [stdout] 150 | |         new: Min::new(PERIOD),
[INFO] [stdout] 151 | |         inputs: INPUTS.iter().map(|x| x.price()),
[INFO] [stdout] 152 | |         outputs: OUTPUTS.iter().copied(),
[INFO] [stdout] ...   |
[INFO] [stdout] 168 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<f64 as Into<f64>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `usize`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/indicators/min_index.rs:170:5
[INFO] [stdout]     |
[INFO] [stdout] 170 | /     test_indicator! {
[INFO] [stdout] 171 | |         new: MinIndex::new(PERIOD),
[INFO] [stdout] 172 | |         inputs: INPUTS.iter().map(|x| x.price()),
[INFO] [stdout] 173 | |         outputs: OUTPUTS.iter().copied(),
[INFO] [stdout] ...   |
[INFO] [stdout] 189 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<usize as Into<usize>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `f64`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/indicators/rma.rs:85:5
[INFO] [stdout]     |
[INFO] [stdout]  85 | /     test_indicator! {
[INFO] [stdout]  86 | |         new: Rma::new(PERIOD),
[INFO] [stdout]  87 | |         inputs: INPUTS.iter().map(|x| x.price()),
[INFO] [stdout]  88 | |         outputs: OUTPUTS.iter().copied(),
[INFO] [stdout] ...   |
[INFO] [stdout] 104 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<f64 as Into<f64>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `f64`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/indicators/rsi.rs:120:5
[INFO] [stdout]     |
[INFO] [stdout] 120 | /     test_indicator! {
[INFO] [stdout] 121 | |         new: Rsi::new(PERIOD),
[INFO] [stdout] 122 | |         inputs: INPUTS.iter().map(|x| x.price()),
[INFO] [stdout] 123 | |         outputs: OUTPUTS.iter().copied(),
[INFO] [stdout] ...   |
[INFO] [stdout] 139 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<f64 as Into<f64>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `f64`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/indicators/sma.rs:182:5
[INFO] [stdout]     |
[INFO] [stdout] 182 | /     test_indicator! {
[INFO] [stdout] 183 | |         new: Sma::new(PERIOD),
[INFO] [stdout] 184 | |         inputs: INPUTS.iter().map(|x| x.price()),
[INFO] [stdout] 185 | |         outputs: OUTPUTS.iter().copied(),
[INFO] [stdout] ...   |
[INFO] [stdout] 201 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<f64 as Into<f64>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `standard_deviation::StandardDeviationOutput`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/indicators/standard_deviation.rs:249:5
[INFO] [stdout]     |
[INFO] [stdout] 249 | /     test_indicator! {
[INFO] [stdout] 250 | |         new: StandardDeviation::new(PERIOD),
[INFO] [stdout] 251 | |         inputs: INPUTS.iter().map(|x| x.price()),
[INFO] [stdout] 252 | |         outputs: OUTPUTS.iter().copied(),
[INFO] [stdout] ...   |
[INFO] [stdout] 267 | |         },
[INFO] [stdout] 268 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<standard_deviation::StandardDeviationOutput as Into<standard_deviation::StandardDeviationOutput>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `stochastics::StochasticsOutput`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/indicators/stochastics.rs:197:5
[INFO] [stdout]     |
[INFO] [stdout] 197 | /     test_indicator! {
[INFO] [stdout] 198 | |         new: Stochastics::new(N_PERIOD, M_PERIOD, X_PERIOD),
[INFO] [stdout] 199 | |         inputs: INPUTS.iter().map(|x| x.price()),
[INFO] [stdout] 200 | |         outputs: OUTPUTS.iter().copied(),
[INFO] [stdout] ...   |
[INFO] [stdout] 220 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<stochastics::StochasticsOutput as Into<stochastics::StochasticsOutput>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `f64`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/indicators/vwap.rs:163:5
[INFO] [stdout]     |
[INFO] [stdout] 163 | /     test_indicator! {
[INFO] [stdout] 164 | |         new: crate::Result::Ok(Vwap::new()),
[INFO] [stdout] 165 | |         inputs: INPUTS.iter().map(|x| (x.price(), x.volume())),
[INFO] [stdout] 166 | |         outputs: OUTPUTS.iter().copied(),
[INFO] [stdout] ...   |
[INFO] [stdout] 179 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<f64 as Into<f64>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `f64`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/indicators/vwma.rs:262:5
[INFO] [stdout]     |
[INFO] [stdout] 262 | /     test_indicator! {
[INFO] [stdout] 263 | |         new: Vwma::new(PERIOD),
[INFO] [stdout] 264 | |         inputs: INPUTS.iter().map(|x| (x.price(), x.volume())),
[INFO] [stdout] 265 | |         outputs: OUTPUTS.iter().copied(),
[INFO] [stdout] ...   |
[INFO] [stdout] 281 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<f64 as Into<f64>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `f64`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/operators/map.rs:103:5
[INFO] [stdout]     |
[INFO] [stdout] 103 | /     test_indicator! {
[INFO] [stdout] 104 | |         new: Sma::new(PERIOD).map(|sma| Map::new(sma, f)),
[INFO] [stdout] 105 | |         inputs: INPUTS.iter().map(|x| x.price()),
[INFO] [stdout] 106 | |         outputs: OUTPUTS.iter().copied(),
[INFO] [stdout] ...   |
[INFO] [stdout] 118 | |         },
[INFO] [stdout] 119 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<f64 as Into<f64>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `f64`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/operators/composition.rs:88:5
[INFO] [stdout]     |
[INFO] [stdout]  88 | /     test_indicator! {
[INFO] [stdout]  89 | |         new: match (Sma::new(SMA_PERIOD), Rsi::new(RSI_PERIOD)) {
[INFO] [stdout]  90 | |             (Ok(sma), Ok(rsi)) => Ok(Composition::new(rsi, sma)),
[INFO] [stdout]  91 | |             (Err(why), _) => Err(why),
[INFO] [stdout] ...   |
[INFO] [stdout] 107 | |         },
[INFO] [stdout] 108 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<f64 as Into<f64>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `f64`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/operators/diff.rs:90:5
[INFO] [stdout]     |
[INFO] [stdout]  90 | /     test_indicator! {
[INFO] [stdout]  91 | |         new: Ok(Diff::new(Identity::new(), Identity::new())),
[INFO] [stdout]  92 | |         inputs: INPUTS.iter().copied(),
[INFO] [stdout]  93 | |         outputs: OUTPUTS.iter().copied(),
[INFO] [stdout] ...   |
[INFO] [stdout] 102 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<f64 as Into<f64>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `(f64, f64)`
[INFO] [stdout]    --> src/test_helper.rs:295:63
[INFO] [stdout]     |
[INFO] [stdout] 279 | / macro_rules! test_current {
[INFO] [stdout] 280 | |     {
[INFO] [stdout] 281 | |         new: $new:expr_2021,
[INFO] [stdout] 282 | |         inputs: $inputs:expr_2021,
[INFO] [stdout] ...   |
[INFO] [stdout] 295 | |                 assert_eq!(Current::current(&indicator), Some(value.into()));
[INFO] [stdout]     | |                                                               ^^^^^^^^^^^^
[INFO] [stdout] ...   |
[INFO] [stdout] 300 | |     };
[INFO] [stdout] 301 | | }
[INFO] [stdout]     | |_- this error originates in the macro `test_current` which comes from the expansion of the macro `test_indicator`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/operators/together.rs:103:5
[INFO] [stdout]     |
[INFO] [stdout] 103 | /     test_indicator! {
[INFO] [stdout] 104 | |         new: Ok(Together::new(Sma::new(PERIOD).unwrap(), Ema::new(PERIOD).unwrap())),
[INFO] [stdout] 105 | |         inputs: INPUTS.iter().map(|x| x.price()),
[INFO] [stdout] 106 | |         outputs: OUTPUTS.iter().copied(),
[INFO] [stdout] ...   |
[INFO] [stdout] 119 | |     }
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<(f64, f64) as Into<(f64, f64)>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `indicator` (lib test) due to 20 previous errors
[INFO] running `Command { std: "docker" "inspect" "8f8ad461e4b637e730405dc173c5665d6ee5a14bc26542a82601aa7d4fd9107f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8f8ad461e4b637e730405dc173c5665d6ee5a14bc26542a82601aa7d4fd9107f", kill_on_drop: false }`
[INFO] [stdout] 8f8ad461e4b637e730405dc173c5665d6ee5a14bc26542a82601aa7d4fd9107f
