[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] testing tscs37/flathunter-rs against 1.54.0 for beta-1.55-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftscs37%2Fflathunter-rs" "/workspace/builds/worker-27/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-27/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/tscs37/flathunter-rs on toolchain 1.54.0
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.54.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-27/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.54.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 h2 v0.1.24
[INFO] [stderr]   Downloaded human-panic v1.0.1
[INFO] [stderr]   Downloaded backtrace v0.3.31
[INFO] [stderr]   Downloaded os_type v2.2.0
[INFO] [stderr]   Downloaded new_debug_unreachable v1.0.3
[INFO] [stderr]   Downloaded serde v1.0.93
[INFO] [stderr]   Downloaded fern v0.5.8
[INFO] [stderr]   Downloaded serde_derive v1.0.93
[INFO] [stderr]   Downloaded hyper v0.12.30
[INFO] [stderr]   Downloaded rust_decimal v1.0.1
[INFO] [stderr]   Downloaded syn v0.15.38
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-27/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-27/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:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+1.54.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c31d99145b256a23e12579d17451e6db6918c86627341b2e52a15e770c194158
[INFO] running `Command { std: "docker" "start" "-a" "c31d99145b256a23e12579d17451e6db6918c86627341b2e52a15e770c194158", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c31d99145b256a23e12579d17451e6db6918c86627341b2e52a15e770c194158", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c31d99145b256a23e12579d17451e6db6918c86627341b2e52a15e770c194158", kill_on_drop: false }`
[INFO] [stdout] c31d99145b256a23e12579d17451e6db6918c86627341b2e52a15e770c194158
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-27/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-27/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:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+1.54.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 2c65d6f7cbc742a74ec292a53913d873526d54b05066b0fcc8bec1c08adb8263
[INFO] running `Command { std: "docker" "start" "-a" "2c65d6f7cbc742a74ec292a53913d873526d54b05066b0fcc8bec1c08adb8263", kill_on_drop: false }`
[INFO] [stderr]    Compiling lazy_static v1.3.0
[INFO] [stderr]    Compiling syn v0.15.38
[INFO] [stderr]    Compiling futures v0.1.27
[INFO] [stderr]    Compiling serde v1.0.93
[INFO] [stderr]    Compiling arrayvec v0.4.10
[INFO] [stderr]    Compiling memchr v2.2.0
[INFO] [stderr]    Compiling regex v1.1.7
[INFO] [stderr]    Compiling build_const v0.2.1
[INFO] [stderr]    Compiling new_debug_unreachable v1.0.3
[INFO] [stderr]    Compiling httparse v1.3.3
[INFO] [stderr]    Compiling num-bigint v0.2.2
[INFO] [stderr]    Compiling remove_dir_all v0.5.2
[INFO] [stderr]    Compiling arc-swap v0.3.11
[INFO] [stderr]    Compiling quick-error v1.2.2
[INFO] [stderr]    Compiling termcolor v0.3.6
[INFO] [stderr]    Compiling num-traits v0.2.8
[INFO] [stderr]    Compiling backtrace v0.3.31
[INFO] [stderr]    Compiling num-integer v0.1.41
[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]    Compiling log v0.4.6
[INFO] [stderr]    Compiling backtrace-sys v0.1.28
[INFO] [stderr]    Compiling regex-syntax v0.6.7
[INFO] [stderr]    Compiling miniz_oxide_c_api v0.2.1
[INFO] [stderr]    Compiling miniz_oxide v0.2.1
[INFO] [stderr]    Compiling itertools v0.8.0
[INFO] [stderr]    Compiling rand_os v0.1.3
[INFO] [stderr]    Compiling iovec v0.1.2
[INFO] [stderr]    Compiling num_cpus v1.10.1
[INFO] [stderr]    Compiling net2 v0.2.33
[INFO] [stderr]    Compiling time v0.1.42
[INFO] [stderr]    Compiling openssl-sys v0.9.47
[INFO] [stderr]    Compiling html5ever v0.18.0
[INFO] [stderr]    Compiling uuid v0.6.5
[INFO] [stderr]    Compiling crossbeam-utils v0.6.5
[INFO] [stderr]    Compiling thread_local v0.3.6
[INFO] [stderr]    Compiling tokio-trace-core v0.2.0
[INFO] [stderr]    Compiling humantime v1.2.0
[INFO] [stderr]    Compiling futf v0.1.4
[INFO] [stderr]    Compiling tempdir v0.3.7
[INFO] [stderr]    Compiling signal-hook-registry v1.0.1
[INFO] [stderr]    Compiling log v0.3.9
[INFO] [stderr]    Compiling fern v0.5.8
[INFO] [stderr]    Compiling rand v0.6.5
[INFO] [stderr]    Compiling cookie v0.12.0
[INFO] [stderr]    Compiling bytes v0.4.12
[INFO] [stderr]    Compiling mio v0.6.19
[INFO] [stderr]    Compiling crossbeam-queue v0.1.2
[INFO] [stderr]    Compiling tendril v0.3.1
[INFO] [stderr]    Compiling crc v1.8.1
[INFO] [stderr]    Compiling openssl v0.10.23
[INFO] [stderr]    Compiling signal-hook v0.1.9
[INFO] [stderr]    Compiling aho-corasick v0.7.3
[INFO] [stderr]    Compiling http v0.1.17
[INFO] [stderr]    Compiling string v0.2.0
[INFO] [stderr]    Compiling tokio-executor v0.1.7
[INFO] [stderr]    Compiling tokio-io v0.1.12
[INFO] [stderr]    Compiling tokio-sync v0.1.6
[INFO] [stderr]    Compiling tokio-buf v0.1.1
[INFO] [stderr]    Compiling want v0.0.6
[INFO] [stderr]    Compiling futures-cpupool v0.1.8
[INFO] [stderr]    Compiling crossbeam-epoch v0.7.1
[INFO] [stderr]    Compiling phf_generator v0.7.24
[INFO] [stderr]    Compiling parking_lot_core v0.4.0
[INFO] [stderr]    Compiling uuid v0.7.4
[INFO] [stderr]    Compiling tokio-timer v0.2.11
[INFO] [stderr]    Compiling tokio-current-thread v0.1.6
[INFO] [stderr]    Compiling phf_codegen v0.7.24
[INFO] [stderr]    Compiling string_cache_codegen v0.4.2
[INFO] [stderr]    Compiling flate2 v1.0.9
[INFO] [stderr]    Compiling crossbeam-deque v0.7.1
[INFO] [stderr]    Compiling parking_lot v0.7.1
[INFO] [stderr]    Compiling mime_guess v2.0.0-alpha.6
[INFO] [stderr]    Compiling tokio-threadpool v0.1.14
[INFO] [stderr]    Compiling tokio-reactor v0.1.9
[INFO] [stderr]    Compiling error-chain v0.12.1
[INFO] [stderr]    Compiling string_cache v0.6.2
[INFO] [stderr]    Compiling markup5ever v0.3.2
[INFO] [stderr]    Compiling chrono v0.4.7
[INFO] [stderr]    Compiling tokio-tcp v0.1.3
[INFO] [stderr]    Compiling tokio v0.1.21
[INFO] [stderr]    Compiling native-tls v0.2.3
[INFO] [stderr]    Compiling http-body v0.1.0
[INFO] [stderr]    Compiling h2 v0.1.24
[INFO] [stderr]    Compiling synstructure v0.10.2
[INFO] [stderr]    Compiling num v0.2.0
[INFO] [stderr]    Compiling publicsuffix v1.5.2
[INFO] [stderr]    Compiling os_type v2.2.0
[INFO] [stderr]    Compiling serde_derive v1.0.93
[INFO] [stderr]    Compiling failure_derive v0.1.5
[INFO] [stderr]    Compiling hyper v0.12.30
[INFO] [stderr]    Compiling failure v0.1.5
[INFO] [stderr]    Compiling hyper-tls v0.3.2
[INFO] [stderr]    Compiling serde_json v1.0.40
[INFO] [stderr]    Compiling toml v0.4.10
[INFO] [stderr]    Compiling serde_urlencoded v0.5.5
[INFO] [stderr]    Compiling rust_decimal v1.0.1
[INFO] [stderr]    Compiling serde_yaml v0.8.9
[INFO] [stderr]    Compiling human-panic v1.0.1
[INFO] [stderr]    Compiling cookie_store v0.7.0
[INFO] [stderr]    Compiling reqwest v0.9.18
[INFO] [stderr]    Compiling select v0.4.2
[INFO] [stderr]    Compiling 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] 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: 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`
[INFO] [stderr] 
[INFO] [stderr] To learn more, run the command again with --verbose.
[INFO] running `Command { std: "docker" "inspect" "2c65d6f7cbc742a74ec292a53913d873526d54b05066b0fcc8bec1c08adb8263", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2c65d6f7cbc742a74ec292a53913d873526d54b05066b0fcc8bec1c08adb8263", kill_on_drop: false }`
[INFO] [stdout] 2c65d6f7cbc742a74ec292a53913d873526d54b05066b0fcc8bec1c08adb8263
