[INFO] cloning repository https://github.com/tscs37/flathunter-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/tscs37/flathunter-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftscs37%2Fflathunter-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftscs37%2Fflathunter-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 462ca6618d0dd2e27ce6f7b3e871a7ea27118dec
[INFO] checking tscs37/flathunter-rs against 1.55.0 for beta-1.56-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftscs37%2Fflathunter-rs" "/workspace/builds/worker-9/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-9/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/tscs37/flathunter-rs on toolchain 1.55.0
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.55.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/tscs37/flathunter-rs
[INFO] finished tweaking git repo https://github.com/tscs37/flathunter-rs
[INFO] tweaked toml for git repo https://github.com/tscs37/flathunter-rs written to /workspace/builds/worker-9/source/Cargo.toml
[INFO] crate git repo https://github.com/tscs37/flathunter-rs already has a lockfile, it will not be regenerated
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.55.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded string_cache_codegen v0.4.2
[INFO] [stderr]   Downloaded termcolor v0.3.6
[INFO] [stderr]   Downloaded human-panic v1.0.1
[INFO] [stderr]   Downloaded serde_derive v1.0.93
[INFO] [stderr]   Downloaded hyper v0.12.30
[INFO] [stderr]   Downloaded syn v0.15.38
[INFO] [stderr]   Downloaded fern v0.5.8
[INFO] [stderr]   Downloaded new_debug_unreachable v1.0.3
[INFO] [stderr]   Downloaded serde v1.0.93
[INFO] [stderr]   Downloaded backtrace v0.3.31
[INFO] [stderr]   Downloaded os_type v2.2.0
[INFO] [stderr]   Downloaded serde_yaml v0.8.9
[INFO] [stderr]   Downloaded signal-hook v0.1.9
[INFO] [stderr]   Downloaded signal-hook-registry v1.0.1
[INFO] [stderr]   Downloaded rust_decimal v1.0.1
[INFO] [stderr]   Downloaded h2 v0.1.24
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/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:a89201d6b5b9fd45c15d5952ece0a0129e7e80cb26ec023fd59cf09bc26f1604" "/opt/rustwide/cargo-home/bin/cargo" "+1.55.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] [stdout] b25368e5010166f206dc98cf50769dcbefaa545318b8608089eef9c6af7eb218
[INFO] running `Command { std: "docker" "start" "-a" "b25368e5010166f206dc98cf50769dcbefaa545318b8608089eef9c6af7eb218", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b25368e5010166f206dc98cf50769dcbefaa545318b8608089eef9c6af7eb218", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b25368e5010166f206dc98cf50769dcbefaa545318b8608089eef9c6af7eb218", kill_on_drop: false }`
[INFO] [stdout] b25368e5010166f206dc98cf50769dcbefaa545318b8608089eef9c6af7eb218
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "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:a89201d6b5b9fd45c15d5952ece0a0129e7e80cb26ec023fd59cf09bc26f1604" "/opt/rustwide/cargo-home/bin/cargo" "+1.55.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] [stdout] 1e56d296244563ef69e29134c33caeb8826d1948ce11c01ee6b54c6a3e407aa9
[INFO] running `Command { std: "docker" "start" "-a" "1e56d296244563ef69e29134c33caeb8826d1948ce11c01ee6b54c6a3e407aa9", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]    Compiling autocfg v0.1.4
[INFO] [stderr]    Compiling libc v0.2.58
[INFO] [stderr]     Checking cfg-if v0.1.9
[INFO] [stderr]    Compiling proc-macro2 v0.4.30
[INFO] [stderr]    Compiling rand_core v0.4.0
[INFO] [stderr]     Checking lazy_static v1.3.0
[INFO] [stderr]    Compiling cc v1.0.37
[INFO] [stderr]    Compiling syn v0.15.38
[INFO] [stderr]    Compiling byteorder v1.3.2
[INFO] [stderr]     Checking futures v0.1.27
[INFO] [stderr]     Checking smallvec v0.6.10
[INFO] [stderr]     Checking either v1.5.2
[INFO] [stderr]    Compiling serde v1.0.93
[INFO] [stderr]    Compiling memchr v2.2.0
[INFO] [stderr]    Compiling string_cache_shared v0.3.0
[INFO] [stderr]     Checking itoa v0.4.4
[INFO] [stderr]     Checking rustc-demangle v0.1.15
[INFO] [stderr]    Compiling regex v1.1.7
[INFO] [stderr]     Checking utf8-ranges v1.0.3
[INFO] [stderr]    Compiling bitflags v1.1.0
[INFO] [stderr]    Compiling build_const v0.2.1
[INFO] [stderr]    Compiling failure_derive v0.1.5
[INFO] [stderr]     Checking mac v0.1.1
[INFO] [stderr]     Checking new_debug_unreachable v1.0.3
[INFO] [stderr]    Compiling openssl v0.10.23
[INFO] [stderr]    Compiling ryu v1.0.0
[INFO] [stderr]    Compiling num-bigint v0.2.2
[INFO] [stderr]    Compiling rustc-serialize v0.3.24
[INFO] [stderr]     Checking adler32 v1.0.3
[INFO] [stderr]     Checking utf-8 v0.7.5
[INFO] [stderr]     Checking try-lock v0.2.2
[INFO] [stderr]     Checking precomputed-hash v0.1.1
[INFO] [stderr]    Compiling native-tls v0.2.3
[INFO] [stderr]     Checking dtoa v0.4.4
[INFO] [stderr]    Compiling encoding_rs v0.8.17
[INFO] [stderr]     Checking bit-vec v0.4.4
[INFO] [stderr]     Checking linked-hash-map v0.5.2
[INFO] [stderr]     Checking arc-swap v0.3.11
[INFO] [stderr]     Checking remove_dir_all v0.5.2
[INFO] [stderr]     Checking termcolor v0.3.6
[INFO] [stderr]    Compiling error-chain v0.12.1
[INFO] [stderr]    Compiling unicase v2.4.0
[INFO] [stderr]     Checking log v0.4.6
[INFO] [stderr]     Checking try_from v0.3.2
[INFO] [stderr]     Checking rand_core v0.3.1
[INFO] [stderr]     Checking rand_jitter v0.1.4
[INFO] [stderr]     Checking crossbeam-utils v0.6.5
[INFO] [stderr]     Checking thread_local v0.3.6
[INFO] [stderr]     Checking tokio-trace-core v0.2.0
[INFO] [stderr]     Checking regex-syntax v0.6.7
[INFO] [stderr]     Checking itertools v0.8.0
[INFO] [stderr]     Checking unicode-normalization v0.1.8
[INFO] [stderr]     Checking unreachable v0.1.1
[INFO] [stderr]    Compiling crc v1.8.1
[INFO] [stderr]    Compiling rand_pcg v0.1.2
[INFO] [stderr]    Compiling rand_chacha v0.1.1
[INFO] [stderr]    Compiling rand v0.6.5
[INFO] [stderr]    Compiling num-traits v0.2.8
[INFO] [stderr]    Compiling num-integer v0.1.41
[INFO] [stderr]    Compiling backtrace v0.3.31
[INFO] [stderr]    Compiling num-iter v0.1.39
[INFO] [stderr]    Compiling num-rational v0.2.2
[INFO] [stderr]    Compiling num-complex v0.2.3
[INFO] [stderr]     Checking futf v0.1.4
[INFO] [stderr]     Checking miniz_oxide v0.2.1
[INFO] [stderr]     Checking bit-set v0.4.0
[INFO] [stderr]     Checking yaml-rust v0.4.3
[INFO] [stderr]     Checking log v0.3.9
[INFO] [stderr]     Checking fern v0.5.8
[INFO] [stderr]     Checking rand_xorshift v0.1.1
[INFO] [stderr]     Checking rand_hc v0.1.0
[INFO] [stderr]     Checking rand_isaac v0.1.1
[INFO] [stderr]    Compiling syn v0.11.11
[INFO] [stderr]     Checking debug_unreachable v0.1.1
[INFO] [stderr]     Checking crossbeam-queue v0.1.2
[INFO] [stderr]     Checking crc32fast v1.2.0
[INFO] [stderr]     Checking tokio-executor v0.1.7
[INFO] [stderr]     Checking tokio-sync v0.1.6
[INFO] [stderr]     Checking want v0.0.6
[INFO] [stderr]     Checking crossbeam-epoch v0.7.1
[INFO] [stderr]     Checking tendril v0.3.1
[INFO] [stderr]    Compiling backtrace-sys v0.1.28
[INFO] [stderr]    Compiling openssl-sys v0.9.47
[INFO] [stderr]    Compiling miniz_oxide_c_api v0.2.1
[INFO] [stderr]    Compiling phf_shared v0.7.24
[INFO] [stderr]     Checking idna v0.1.5
[INFO] [stderr]     Checking tokio-current-thread v0.1.6
[INFO] [stderr]     Checking tokio-timer v0.2.11
[INFO] [stderr]     Checking aho-corasick v0.7.3
[INFO] [stderr]     Checking crossbeam-deque v0.7.1
[INFO] [stderr]     Checking base64 v0.10.1
[INFO] [stderr]    Compiling quote v0.6.12
[INFO] [stderr]    Compiling rand_os v0.1.3
[INFO] [stderr]     Checking iovec v0.1.2
[INFO] [stderr]     Checking num_cpus v1.10.1
[INFO] [stderr]     Checking net2 v0.2.33
[INFO] [stderr]     Checking time v0.1.42
[INFO] [stderr]     Checking rand v0.4.6
[INFO] [stderr]     Checking signal-hook-registry v1.0.1
[INFO] [stderr]     Checking phf v0.7.24
[INFO] [stderr]     Checking mime v0.3.13
[INFO] [stderr]     Checking futures-cpupool v0.1.8
[INFO] [stderr]     Checking bytes v0.4.12
[INFO] [stderr]     Checking mio v0.6.19
[INFO] [stderr]     Checking url v1.7.2
[INFO] [stderr]     Checking signal-hook v0.1.9
[INFO] [stderr]     Checking tokio-io v0.1.12
[INFO] [stderr]     Checking http v0.1.17
[INFO] [stderr]     Checking tokio-buf v0.1.1
[INFO] [stderr]     Checking string v0.2.0
[INFO] [stderr]     Checking flate2 v1.0.9
[INFO] [stderr]     Checking uuid v0.6.5
[INFO] [stderr]     Checking tempdir v0.3.7
[INFO] [stderr]     Checking cookie v0.12.0
[INFO] [stderr]     Checking parking_lot_core v0.4.0
[INFO] [stderr]     Checking tokio-threadpool v0.1.14
[INFO] [stderr]     Checking uuid v0.7.4
[INFO] [stderr]     Checking chrono v0.4.7
[INFO] [stderr]    Compiling phf_generator v0.7.24
[INFO] [stderr]     Checking parking_lot v0.7.1
[INFO] [stderr]    Compiling phf_codegen v0.7.24
[INFO] [stderr]    Compiling string_cache_codegen v0.4.2
[INFO] [stderr]     Checking publicsuffix v1.5.2
[INFO] [stderr]     Checking os_type v2.2.0
[INFO] [stderr]    Compiling mime_guess v2.0.0-alpha.6
[INFO] [stderr]     Checking tokio-reactor v0.1.9
[INFO] [stderr]    Compiling html5ever v0.18.0
[INFO] [stderr]    Compiling string_cache v0.6.2
[INFO] [stderr]    Compiling markup5ever v0.3.2
[INFO] [stderr]     Checking tokio-tcp v0.1.3
[INFO] [stderr]     Checking tokio v0.1.21
[INFO] [stderr]     Checking num v0.2.0
[INFO] [stderr]     Checking http-body v0.1.0
[INFO] [stderr]     Checking h2 v0.1.24
[INFO] [stderr]    Compiling synstructure v0.10.2
[INFO] [stderr]    Compiling serde_derive v1.0.93
[INFO] [stderr]     Checking hyper v0.12.30
[INFO] [stderr]     Checking failure v0.1.5
[INFO] [stderr]     Checking hyper-tls v0.3.2
[INFO] [stderr]     Checking serde_json v1.0.40
[INFO] [stderr]     Checking serde_urlencoded v0.5.5
[INFO] [stderr]     Checking toml v0.4.10
[INFO] [stderr]     Checking serde_yaml v0.8.9
[INFO] [stderr]     Checking rust_decimal v1.0.1
[INFO] [stderr]     Checking human-panic v1.0.1
[INFO] [stderr]     Checking cookie_store v0.7.0
[INFO] [stderr]     Checking reqwest v0.9.18
[INFO] [stderr]     Checking select v0.4.2
[INFO] [stderr]     Checking flathunter-rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0412]: cannot find type `NoneError` in module `std::option`
[INFO] [stdout]  --> src/errors.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl From<std::option::NoneError> for NoneError {
[INFO] [stdout]   |                        ^^^^^^^^^ not found in `std::option`
[INFO] [stdout]   |
[INFO] [stdout] help: there is an enum variant `crate::ErrorKind::NoneError`; try using the variant's enum
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl From<crate::ErrorKind> for NoneError {
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `NoneError` in module `std::option`
[INFO] [stdout]  --> src/errors.rs:7:27
[INFO] [stdout]   |
[INFO] [stdout] 7 |   fn from(_: std::option::NoneError) -> Self {
[INFO] [stdout]   |                           ^^^^^^^^^ not found in `std::option`
[INFO] [stdout]   |
[INFO] [stdout] help: there is an enum variant `crate::ErrorKind::NoneError`; try using the variant's enum
[INFO] [stdout]   |
[INFO] [stdout] 7 |   fn from(_: crate::ErrorKind) -> Self {
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `NoneError` in module `std::option`
[INFO] [stdout]   --> src/errors.rs:22:24
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl From<std::option::NoneError> for Error {
[INFO] [stdout]    |                        ^^^^^^^^^ not found in `std::option`
[INFO] [stdout]    |
[INFO] [stdout] help: there is an enum variant `crate::ErrorKind::NoneError`; try using the variant's enum
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl From<crate::ErrorKind> for Error {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `NoneError` in module `std::option`
[INFO] [stdout]   --> src/errors.rs:23:27
[INFO] [stdout]    |
[INFO] [stdout] 23 |   fn from(s: std::option::NoneError) -> Self {
[INFO] [stdout]    |                           ^^^^^^^^^ not found in `std::option`
[INFO] [stdout]    |
[INFO] [stdout] help: there is an enum variant `crate::ErrorKind::NoneError`; try using the variant's enum
[INFO] [stdout]    |
[INFO] [stdout] 23 |   fn from(s: crate::ErrorKind) -> Self {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0554]: `#![feature]` may not be used on the stable release channel
[INFO] [stdout]  --> src/main.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(try_trait)]
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0554]: `#![feature]` may not be used on the stable release channel
[INFO] [stdout]  --> src/main.rs:2:1
[INFO] [stdout]   |
[INFO] [stdout] 2 | #![feature(generator_trait)]
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/notifiers/webhook.rs:69:10
[INFO] [stdout]    |
[INFO] [stdout] 69 |         };
[INFO] [stdout]    |          ^ help: remove this semicolon
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(redundant_semicolons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/notifiers/webhook.rs:118:10
[INFO] [stdout]     |
[INFO] [stdout] 118 |         };
[INFO] [stdout]     |          ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/errors.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | / error_chain! {
[INFO] [stdout] 29 | |     // The type defined for this error. These are the conventional
[INFO] [stdout] 30 | |     // and recommended names, but they can be arbitrarily chosen.
[INFO] [stdout] 31 | |     //
[INFO] [stdout] ...  |
[INFO] [stdout] 93 | |     }
[INFO] [stdout] 94 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout]    = note: this warning originates in the macro `impl_error_chain_processed` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `NoneError` in module `std::option`
[INFO] [stdout]  --> src/errors.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl From<std::option::NoneError> for NoneError {
[INFO] [stdout]   |                        ^^^^^^^^^ not found in `std::option`
[INFO] [stdout]   |
[INFO] [stdout] help: there is an enum variant `crate::ErrorKind::NoneError`; try using the variant's enum
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl From<crate::ErrorKind> for NoneError {
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `NoneError` in module `std::option`
[INFO] [stdout]  --> src/errors.rs:7:27
[INFO] [stdout]   |
[INFO] [stdout] 7 |   fn from(_: std::option::NoneError) -> Self {
[INFO] [stdout]   |                           ^^^^^^^^^ not found in `std::option`
[INFO] [stdout]   |
[INFO] [stdout] help: there is an enum variant `crate::ErrorKind::NoneError`; try using the variant's enum
[INFO] [stdout]   |
[INFO] [stdout] 7 |   fn from(_: crate::ErrorKind) -> Self {
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `NoneError` in module `std::option`
[INFO] [stdout]   --> src/errors.rs:22:24
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl From<std::option::NoneError> for Error {
[INFO] [stdout]    |                        ^^^^^^^^^ not found in `std::option`
[INFO] [stdout]    |
[INFO] [stdout] help: there is an enum variant `crate::ErrorKind::NoneError`; try using the variant's enum
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl From<crate::ErrorKind> for Error {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `NoneError` in module `std::option`
[INFO] [stdout]   --> src/errors.rs:23:27
[INFO] [stdout]    |
[INFO] [stdout] 23 |   fn from(s: std::option::NoneError) -> Self {
[INFO] [stdout]    |                           ^^^^^^^^^ not found in `std::option`
[INFO] [stdout]    |
[INFO] [stdout] help: there is an enum variant `crate::ErrorKind::NoneError`; try using the variant's enum
[INFO] [stdout]    |
[INFO] [stdout] 23 |   fn from(s: crate::ErrorKind) -> Self {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0554]: `#![feature]` may not be used on the stable release channel
[INFO] [stdout]  --> src/main.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(try_trait)]
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0554]: `#![feature]` may not be used on the stable release channel
[INFO] [stdout]  --> src/main.rs:2:1
[INFO] [stdout]   |
[INFO] [stdout] 2 | #![feature(generator_trait)]
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/errors.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | / error_chain! {
[INFO] [stdout] 29 | |     // The type defined for this error. These are the conventional
[INFO] [stdout] 30 | |     // and recommended names, but they can be arbitrarily chosen.
[INFO] [stdout] 31 | |     //
[INFO] [stdout] ...  |
[INFO] [stdout] 93 | |     }
[INFO] [stdout] 94 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `impl_error_chain_processed` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/notifiers/webhook.rs:69:10
[INFO] [stdout]    |
[INFO] [stdout] 69 |         };
[INFO] [stdout]    |          ^ help: remove this semicolon
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(redundant_semicolons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/notifiers/webhook.rs:118:10
[INFO] [stdout]     |
[INFO] [stdout] 118 |         };
[INFO] [stdout]     |          ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/errors.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | / error_chain! {
[INFO] [stdout] 29 | |     // The type defined for this error. These are the conventional
[INFO] [stdout] 30 | |     // and recommended names, but they can be arbitrarily chosen.
[INFO] [stdout] 31 | |     //
[INFO] [stdout] ...  |
[INFO] [stdout] 93 | |     }
[INFO] [stdout] 94 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout]    = note: this warning originates in the macro `impl_error_chain_processed` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/errors.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | / error_chain! {
[INFO] [stdout] 29 | |     // The type defined for this error. These are the conventional
[INFO] [stdout] 30 | |     // and recommended names, but they can be arbitrarily chosen.
[INFO] [stdout] 31 | |     //
[INFO] [stdout] ...  |
[INFO] [stdout] 93 | |     }
[INFO] [stdout] 94 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `impl_error_chain_processed` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a function that returns `Result`
[INFO] [stdout]    --> src/main.rs:110:53
[INFO] [stdout]     |
[INFO] [stdout] 103 | / fn run(notif: Box<NotifierContainer>) -> Result<Config> {
[INFO] [stdout] 104 | |   debug!("Loading configuration");
[INFO] [stdout] 105 | |   let mut config = get_config()?;
[INFO] [stdout] 106 | |   let mut results = Vec::new();
[INFO] [stdout] ...   |
[INFO] [stdout] 110 | |     let crawler = crawlers::get_crawler(url.clone())?;
[INFO] [stdout]     | |                                                     ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Config, errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 141 | |   Ok(config)
[INFO] [stdout] 142 | | }
[INFO] [stdout]     | |_- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Config, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a closure that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:76:74
[INFO] [stdout]     |
[INFO] [stdout] 76  | ...se_ids.map(|e| -> Result<String> { Ok(e.parent()?.attr("href")?.split("/").last()?.replace(".html", "").to_owned()) });
[INFO] [stdout]     |               -------------------------------------^--------------------------------------------------------------------
[INFO] [stdout]     |               |                                    |
[INFO] [stdout]     |               |                                    use `.ok_or(...)?` to provide an error compatible with `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout]     |               this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a closure that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:76:88
[INFO] [stdout]     |
[INFO] [stdout] 76  | ...se_ids.map(|e| -> Result<String> { Ok(e.parent()?.attr("href")?.split("/").last()?.replace(".html", "").to_owned()) });
[INFO] [stdout]     |               ---------------------------------------------------^------------------------------------------------------
[INFO] [stdout]     |               |                                                  |
[INFO] [stdout]     |               |                                                  use `.ok_or(...)?` to provide an error compatible with `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout]     |               this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a closure that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:76:107
[INFO] [stdout]     |
[INFO] [stdout] 76  | ...se_ids.map(|e| -> Result<String> { Ok(e.parent()?.attr("href")?.split("/").last()?.replace(".html", "").to_owned()) });
[INFO] [stdout]     |               ----------------------------------------------------------------------^-----------------------------------
[INFO] [stdout]     |               |                                                                     |
[INFO] [stdout]     |               |                                                                     use `.ok_or(...)?` to provide an error compatible with `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout]     |               this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a closure that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:78:76
[INFO] [stdout]     |
[INFO] [stdout] 78  | ...e_urls.map(|e| -> Result<String> { Ok(e.parent()?.attr("href")?.split("/").last()?.replace(".html", "").to_owned()) });
[INFO] [stdout]     |               -------------------------------------^--------------------------------------------------------------------
[INFO] [stdout]     |               |                                    |
[INFO] [stdout]     |               |                                    use `.ok_or(...)?` to provide an error compatible with `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout]     |               this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a closure that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:78:90
[INFO] [stdout]     |
[INFO] [stdout] 78  | ...e_urls.map(|e| -> Result<String> { Ok(e.parent()?.attr("href")?.split("/").last()?.replace(".html", "").to_owned()) });
[INFO] [stdout]     |               ---------------------------------------------------^------------------------------------------------------
[INFO] [stdout]     |               |                                                  |
[INFO] [stdout]     |               |                                                  use `.ok_or(...)?` to provide an error compatible with `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout]     |               this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a closure that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:78:109
[INFO] [stdout]     |
[INFO] [stdout] 78  | ...e_urls.map(|e| -> Result<String> { Ok(e.parent()?.attr("href")?.split("/").last()?.replace(".html", "").to_owned()) });
[INFO] [stdout]     |               ----------------------------------------------------------------------^-----------------------------------
[INFO] [stdout]     |               |                                                                     |
[INFO] [stdout]     |               |                                                                     use `.ok_or(...)?` to provide an error compatible with `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout]     |               this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:91:45
[INFO] [stdout]     |
[INFO] [stdout] 70  | /   fn extract_data(&self, data: String) -> Result<Vec<Housing>> {
[INFO] [stdout] 71  | |     debug!("extracting page data");
[INFO] [stdout] 72  | |     let document = Document::from(data.as_str());
[INFO] [stdout] 73  | |
[INFO] [stdout] ...   |
[INFO] [stdout] 91  | |       let price = expose.3.children().nth(0)?.text();
[INFO] [stdout]     | |                                             ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |     Ok(out)
[INFO] [stdout] 110 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:93:49
[INFO] [stdout]     |
[INFO] [stdout] 70  | /   fn extract_data(&self, data: String) -> Result<Vec<Housing>> {
[INFO] [stdout] 71  | |     debug!("extracting page data");
[INFO] [stdout] 72  | |     let document = Document::from(data.as_str());
[INFO] [stdout] 73  | |
[INFO] [stdout] ...   |
[INFO] [stdout] 93  | |       let price = price.trim().split(" ").nth(0)?.trim();
[INFO] [stdout]     | |                                                 ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |     Ok(out)
[INFO] [stdout] 110 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:96:44
[INFO] [stdout]     |
[INFO] [stdout] 70  | /   fn extract_data(&self, data: String) -> Result<Vec<Housing>> {
[INFO] [stdout] 71  | |     debug!("extracting page data");
[INFO] [stdout] 72  | |     let document = Document::from(data.as_str());
[INFO] [stdout] 73  | |
[INFO] [stdout] ...   |
[INFO] [stdout] 96  | |       let size = expose.3.children().nth(1)?.text();
[INFO] [stdout]     | |                                            ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |     Ok(out)
[INFO] [stdout] 110 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:98:47
[INFO] [stdout]     |
[INFO] [stdout] 70  | /   fn extract_data(&self, data: String) -> Result<Vec<Housing>> {
[INFO] [stdout] 71  | |     debug!("extracting page data");
[INFO] [stdout] 72  | |     let document = Document::from(data.as_str());
[INFO] [stdout] 73  | |
[INFO] [stdout] ...   |
[INFO] [stdout] 98  | |       let size = size.trim().split(" ").nth(0)?.trim().replace(",", ".");
[INFO] [stdout]     | |                                               ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |     Ok(out)
[INFO] [stdout] 110 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:100:45
[INFO] [stdout]     |
[INFO] [stdout] 70  | /   fn extract_data(&self, data: String) -> Result<Vec<Housing>> {
[INFO] [stdout] 71  | |     debug!("extracting page data");
[INFO] [stdout] 72  | |     let document = Document::from(data.as_str());
[INFO] [stdout] 73  | |
[INFO] [stdout] ...   |
[INFO] [stdout] 100 | |       let rooms = expose.3.children().nth(2)?.text();
[INFO] [stdout]     | |                                             ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |     Ok(out)
[INFO] [stdout] 110 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:101:42
[INFO] [stdout]     |
[INFO] [stdout] 70  | /   fn extract_data(&self, data: String) -> Result<Vec<Housing>> {
[INFO] [stdout] 71  | |     debug!("extracting page data");
[INFO] [stdout] 72  | |     let document = Document::from(data.as_str());
[INFO] [stdout] 73  | |
[INFO] [stdout] ...   |
[INFO] [stdout] 101 | |       let rooms = rooms.split(" ").nth(0)?;
[INFO] [stdout]     | |                                          ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |     Ok(out)
[INFO] [stdout] 110 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/notifiers/mod.rs:26:66
[INFO] [stdout]    |
[INFO] [stdout] 26 |     self.post_message(cfg, &format!("Error in Flathunter: {}", e.description()))?;
[INFO] [stdout]    |                                                                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/notifiers/webhook.rs:58:46
[INFO] [stdout]     |
[INFO] [stdout] 52  | /   fn new_result(&self, cfg: &Config, res: Housing) -> Result<()> {
[INFO] [stdout] 53  | |     let conf = cfg.notify_conf.get(CONFIG_KEY);
[INFO] [stdout] 54  | |     let conf: &BTreeMap<String, String> = match conf {
[INFO] [stdout] 55  | |       None => { return Ok(()); },
[INFO] [stdout] ...   |
[INFO] [stdout] 58  | |     let hook_type: &String = conf.get("type")?;
[INFO] [stdout]     | |                                              ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<(), errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 99  | |     Ok(())
[INFO] [stdout] 100 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<(), errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/notifiers/webhook.rs:60:35
[INFO] [stdout]     |
[INFO] [stdout] 52  | /   fn new_result(&self, cfg: &Config, res: Housing) -> Result<()> {
[INFO] [stdout] 53  | |     let conf = cfg.notify_conf.get(CONFIG_KEY);
[INFO] [stdout] 54  | |     let conf: &BTreeMap<String, String> = match conf {
[INFO] [stdout] 55  | |       None => { return Ok(()); },
[INFO] [stdout] ...   |
[INFO] [stdout] 60  | |     let hook_url = conf.get("url")?;
[INFO] [stdout]     | |                                   ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<(), errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 99  | |     Ok(())
[INFO] [stdout] 100 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<(), errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/notifiers/webhook.rs:107:46
[INFO] [stdout]     |
[INFO] [stdout] 101 | /   fn post_message(&self, cfg: &Config, msg: &str) -> Result<()> {
[INFO] [stdout] 102 | |     let conf = cfg.notify_conf.get(CONFIG_KEY);
[INFO] [stdout] 103 | |     let conf: &BTreeMap<String, String> = match conf {
[INFO] [stdout] 104 | |       None => { return Ok(()); },
[INFO] [stdout] ...   |
[INFO] [stdout] 107 | |     let hook_type: &String = conf.get("type")?;
[INFO] [stdout]     | |                                              ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<(), errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 131 | |     Ok(())
[INFO] [stdout] 132 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<(), errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/notifiers/webhook.rs:109:35
[INFO] [stdout]     |
[INFO] [stdout] 101 | /   fn post_message(&self, cfg: &Config, msg: &str) -> Result<()> {
[INFO] [stdout] 102 | |     let conf = cfg.notify_conf.get(CONFIG_KEY);
[INFO] [stdout] 103 | |     let conf: &BTreeMap<String, String> = match conf {
[INFO] [stdout] 104 | |       None => { return Ok(()); },
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |     let hook_url = conf.get("url")?;
[INFO] [stdout]     | |                                   ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<(), errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 131 | |     Ok(())
[INFO] [stdout] 132 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<(), errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a function that returns `Result`
[INFO] [stdout]    --> src/main.rs:110:53
[INFO] [stdout]     |
[INFO] [stdout] 103 | / fn run(notif: Box<NotifierContainer>) -> Result<Config> {
[INFO] [stdout] 104 | |   debug!("Loading configuration");
[INFO] [stdout] 105 | |   let mut config = get_config()?;
[INFO] [stdout] 106 | |   let mut results = Vec::new();
[INFO] [stdout] ...   |
[INFO] [stdout] 110 | |     let crawler = crawlers::get_crawler(url.clone())?;
[INFO] [stdout]     | |                                                     ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Config, errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 141 | |   Ok(config)
[INFO] [stdout] 142 | | }
[INFO] [stdout]     | |_- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Config, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 23 previous errors; 5 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0412, E0554.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `flathunter-rs` due to 24 previous errors; 5 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a closure that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:76:74
[INFO] [stdout]     |
[INFO] [stdout] 76  | ...se_ids.map(|e| -> Result<String> { Ok(e.parent()?.attr("href")?.split("/").last()?.replace(".html", "").to_owned()) });
[INFO] [stdout]     |               -------------------------------------^--------------------------------------------------------------------
[INFO] [stdout]     |               |                                    |
[INFO] [stdout]     |               |                                    use `.ok_or(...)?` to provide an error compatible with `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout]     |               this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a closure that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:76:88
[INFO] [stdout]     |
[INFO] [stdout] 76  | ...se_ids.map(|e| -> Result<String> { Ok(e.parent()?.attr("href")?.split("/").last()?.replace(".html", "").to_owned()) });
[INFO] [stdout]     |               ---------------------------------------------------^------------------------------------------------------
[INFO] [stdout]     |               |                                                  |
[INFO] [stdout]     |               |                                                  use `.ok_or(...)?` to provide an error compatible with `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout]     |               this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a closure that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:76:107
[INFO] [stdout]     |
[INFO] [stdout] 76  | ...se_ids.map(|e| -> Result<String> { Ok(e.parent()?.attr("href")?.split("/").last()?.replace(".html", "").to_owned()) });
[INFO] [stdout]     |               ----------------------------------------------------------------------^-----------------------------------
[INFO] [stdout]     |               |                                                                     |
[INFO] [stdout]     |               |                                                                     use `.ok_or(...)?` to provide an error compatible with `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout]     |               this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a closure that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:78:76
[INFO] [stdout]     |
[INFO] [stdout] 78  | ...e_urls.map(|e| -> Result<String> { Ok(e.parent()?.attr("href")?.split("/").last()?.replace(".html", "").to_owned()) });
[INFO] [stdout]     |               -------------------------------------^--------------------------------------------------------------------
[INFO] [stdout]     |               |                                    |
[INFO] [stdout]     |               |                                    use `.ok_or(...)?` to provide an error compatible with `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout]     |               this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a closure that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:78:90
[INFO] [stdout]     |
[INFO] [stdout] 78  | ...e_urls.map(|e| -> Result<String> { Ok(e.parent()?.attr("href")?.split("/").last()?.replace(".html", "").to_owned()) });
[INFO] [stdout]     |               ---------------------------------------------------^------------------------------------------------------
[INFO] [stdout]     |               |                                                  |
[INFO] [stdout]     |               |                                                  use `.ok_or(...)?` to provide an error compatible with `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout]     |               this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a closure that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:78:109
[INFO] [stdout]     |
[INFO] [stdout] 78  | ...e_urls.map(|e| -> Result<String> { Ok(e.parent()?.attr("href")?.split("/").last()?.replace(".html", "").to_owned()) });
[INFO] [stdout]     |               ----------------------------------------------------------------------^-----------------------------------
[INFO] [stdout]     |               |                                                                     |
[INFO] [stdout]     |               |                                                                     use `.ok_or(...)?` to provide an error compatible with `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout]     |               this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<std::string::String, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:91:45
[INFO] [stdout]     |
[INFO] [stdout] 70  | /   fn extract_data(&self, data: String) -> Result<Vec<Housing>> {
[INFO] [stdout] 71  | |     debug!("extracting page data");
[INFO] [stdout] 72  | |     let document = Document::from(data.as_str());
[INFO] [stdout] 73  | |
[INFO] [stdout] ...   |
[INFO] [stdout] 91  | |       let price = expose.3.children().nth(0)?.text();
[INFO] [stdout]     | |                                             ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |     Ok(out)
[INFO] [stdout] 110 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:93:49
[INFO] [stdout]     |
[INFO] [stdout] 70  | /   fn extract_data(&self, data: String) -> Result<Vec<Housing>> {
[INFO] [stdout] 71  | |     debug!("extracting page data");
[INFO] [stdout] 72  | |     let document = Document::from(data.as_str());
[INFO] [stdout] 73  | |
[INFO] [stdout] ...   |
[INFO] [stdout] 93  | |       let price = price.trim().split(" ").nth(0)?.trim();
[INFO] [stdout]     | |                                                 ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |     Ok(out)
[INFO] [stdout] 110 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:96:44
[INFO] [stdout]     |
[INFO] [stdout] 70  | /   fn extract_data(&self, data: String) -> Result<Vec<Housing>> {
[INFO] [stdout] 71  | |     debug!("extracting page data");
[INFO] [stdout] 72  | |     let document = Document::from(data.as_str());
[INFO] [stdout] 73  | |
[INFO] [stdout] ...   |
[INFO] [stdout] 96  | |       let size = expose.3.children().nth(1)?.text();
[INFO] [stdout]     | |                                            ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |     Ok(out)
[INFO] [stdout] 110 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:98:47
[INFO] [stdout]     |
[INFO] [stdout] 70  | /   fn extract_data(&self, data: String) -> Result<Vec<Housing>> {
[INFO] [stdout] 71  | |     debug!("extracting page data");
[INFO] [stdout] 72  | |     let document = Document::from(data.as_str());
[INFO] [stdout] 73  | |
[INFO] [stdout] ...   |
[INFO] [stdout] 98  | |       let size = size.trim().split(" ").nth(0)?.trim().replace(",", ".");
[INFO] [stdout]     | |                                               ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |     Ok(out)
[INFO] [stdout] 110 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:100:45
[INFO] [stdout]     |
[INFO] [stdout] 70  | /   fn extract_data(&self, data: String) -> Result<Vec<Housing>> {
[INFO] [stdout] 71  | |     debug!("extracting page data");
[INFO] [stdout] 72  | |     let document = Document::from(data.as_str());
[INFO] [stdout] 73  | |
[INFO] [stdout] ...   |
[INFO] [stdout] 100 | |       let rooms = expose.3.children().nth(2)?.text();
[INFO] [stdout]     | |                                             ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |     Ok(out)
[INFO] [stdout] 110 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/crawlers/immoscout.rs:101:42
[INFO] [stdout]     |
[INFO] [stdout] 70  | /   fn extract_data(&self, data: String) -> Result<Vec<Housing>> {
[INFO] [stdout] 71  | |     debug!("extracting page data");
[INFO] [stdout] 72  | |     let document = Document::from(data.as_str());
[INFO] [stdout] 73  | |
[INFO] [stdout] ...   |
[INFO] [stdout] 101 | |       let rooms = rooms.split(" ").nth(0)?;
[INFO] [stdout]     | |                                          ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |     Ok(out)
[INFO] [stdout] 110 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Housing>, errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/notifiers/mod.rs:26:66
[INFO] [stdout]    |
[INFO] [stdout] 26 |     self.post_message(cfg, &format!("Error in Flathunter: {}", e.description()))?;
[INFO] [stdout]    |                                                                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/notifiers/webhook.rs:58:46
[INFO] [stdout]     |
[INFO] [stdout] 52  | /   fn new_result(&self, cfg: &Config, res: Housing) -> Result<()> {
[INFO] [stdout] 53  | |     let conf = cfg.notify_conf.get(CONFIG_KEY);
[INFO] [stdout] 54  | |     let conf: &BTreeMap<String, String> = match conf {
[INFO] [stdout] 55  | |       None => { return Ok(()); },
[INFO] [stdout] ...   |
[INFO] [stdout] 58  | |     let hook_type: &String = conf.get("type")?;
[INFO] [stdout]     | |                                              ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<(), errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 99  | |     Ok(())
[INFO] [stdout] 100 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<(), errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/notifiers/webhook.rs:60:35
[INFO] [stdout]     |
[INFO] [stdout] 52  | /   fn new_result(&self, cfg: &Config, res: Housing) -> Result<()> {
[INFO] [stdout] 53  | |     let conf = cfg.notify_conf.get(CONFIG_KEY);
[INFO] [stdout] 54  | |     let conf: &BTreeMap<String, String> = match conf {
[INFO] [stdout] 55  | |       None => { return Ok(()); },
[INFO] [stdout] ...   |
[INFO] [stdout] 60  | |     let hook_url = conf.get("url")?;
[INFO] [stdout]     | |                                   ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<(), errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 99  | |     Ok(())
[INFO] [stdout] 100 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<(), errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/notifiers/webhook.rs:107:46
[INFO] [stdout]     |
[INFO] [stdout] 101 | /   fn post_message(&self, cfg: &Config, msg: &str) -> Result<()> {
[INFO] [stdout] 102 | |     let conf = cfg.notify_conf.get(CONFIG_KEY);
[INFO] [stdout] 103 | |     let conf: &BTreeMap<String, String> = match conf {
[INFO] [stdout] 104 | |       None => { return Ok(()); },
[INFO] [stdout] ...   |
[INFO] [stdout] 107 | |     let hook_type: &String = conf.get("type")?;
[INFO] [stdout]     | |                                              ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<(), errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 131 | |     Ok(())
[INFO] [stdout] 132 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<(), errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/notifiers/webhook.rs:109:35
[INFO] [stdout]     |
[INFO] [stdout] 101 | /   fn post_message(&self, cfg: &Config, msg: &str) -> Result<()> {
[INFO] [stdout] 102 | |     let conf = cfg.notify_conf.get(CONFIG_KEY);
[INFO] [stdout] 103 | |     let conf: &BTreeMap<String, String> = match conf {
[INFO] [stdout] 104 | |       None => { return Ok(()); },
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |     let hook_url = conf.get("url")?;
[INFO] [stdout]     | |                                   ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<(), errors::Error>`
[INFO] [stdout] ...   |
[INFO] [stdout] 131 | |     Ok(())
[INFO] [stdout] 132 | |   }
[INFO] [stdout]     | |___- this function returns a `Result`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<(), errors::Error>`
[INFO] [stdout] note: required by `from_residual`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 23 previous errors; 5 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0412, E0554.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: build failed
[INFO] running `Command { std: "docker" "inspect" "1e56d296244563ef69e29134c33caeb8826d1948ce11c01ee6b54c6a3e407aa9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1e56d296244563ef69e29134c33caeb8826d1948ce11c01ee6b54c6a3e407aa9", kill_on_drop: false }`
[INFO] [stdout] 1e56d296244563ef69e29134c33caeb8826d1948ce11c01ee6b54c6a3e407aa9
