[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.55.0 for beta-1.56-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftscs37%2Fflathunter-rs" "/workspace/builds/worker-0/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0/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-0/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] Downloading crates ... [INFO] [stderr] Downloaded fern v0.5.8 [INFO] [stderr] Downloaded hyper v0.12.30 [INFO] [stderr] Downloaded os_type v2.2.0 [INFO] [stderr] Downloaded human-panic v1.0.1 [INFO] [stderr] Downloaded rust_decimal v1.0.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/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] [stdout] c2da292af1b35aaa278a878aecf11706082f5289ab48afece2e852dc94a7a9c9 [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "c2da292af1b35aaa278a878aecf11706082f5289ab48afece2e852dc94a7a9c9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "c2da292af1b35aaa278a878aecf11706082f5289ab48afece2e852dc94a7a9c9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c2da292af1b35aaa278a878aecf11706082f5289ab48afece2e852dc94a7a9c9", kill_on_drop: false }` [INFO] [stdout] c2da292af1b35aaa278a878aecf11706082f5289ab48afece2e852dc94a7a9c9 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/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" "build" "--frozen" "--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] 2b8c9f18ee8061090e06b57f1cc77ad603abe0d6db1fe1e3d1df92027d21bb57 [INFO] running `Command { std: "docker" "start" "-a" "2b8c9f18ee8061090e06b57f1cc77ad603abe0d6db1fe1e3d1df92027d21bb57", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.58 [INFO] [stderr] Compiling syn v0.15.38 [INFO] [stderr] Compiling futures v0.1.27 [INFO] [stderr] Compiling serde v1.0.93 [INFO] [stderr] Compiling string_cache_shared v0.3.0 [INFO] [stderr] Compiling num-bigint v0.2.2 [INFO] [stderr] Compiling new_debug_unreachable v1.0.3 [INFO] [stderr] Compiling mac v0.1.1 [INFO] [stderr] Compiling openssl v0.10.23 [INFO] [stderr] Compiling arc-swap v0.3.11 [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-complex v0.2.3 [INFO] [stderr] Compiling num-iter v0.1.39 [INFO] [stderr] Compiling num-rational v0.2.2 [INFO] [stderr] Compiling log v0.4.6 [INFO] [stderr] Compiling backtrace-sys v0.1.28 [INFO] [stderr] Compiling miniz_oxide_c_api v0.2.1 [INFO] [stderr] Compiling tokio-trace-core v0.2.0 [INFO] [stderr] Compiling itertools v0.8.0 [INFO] [stderr] Compiling openssl-sys v0.9.47 [INFO] [stderr] Compiling regex-syntax v0.6.7 [INFO] [stderr] Compiling futf v0.1.4 [INFO] [stderr] Compiling log v0.3.9 [INFO] [stderr] Compiling fern v0.5.8 [INFO] [stderr] Compiling debug_unreachable v0.1.1 [INFO] [stderr] Compiling rand_pcg v0.1.2 [INFO] [stderr] Compiling rand_chacha v0.1.1 [INFO] [stderr] Compiling quote v0.6.12 [INFO] [stderr] Compiling html5ever v0.18.0 [INFO] [stderr] Compiling tendril v0.3.1 [INFO] [stderr] Compiling crossbeam-deque v0.7.1 [INFO] [stderr] Compiling tokio-executor v0.1.7 [INFO] [stderr] Compiling tokio-sync v0.1.6 [INFO] [stderr] Compiling want v0.0.6 [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 rand v0.4.6 [INFO] [stderr] Compiling signal-hook-registry v1.0.1 [INFO] [stderr] Compiling tokio-timer v0.2.11 [INFO] [stderr] Compiling tokio-current-thread v0.1.6 [INFO] [stderr] Compiling native-tls v0.2.3 [INFO] [stderr] Compiling rand v0.6.5 [INFO] [stderr] Compiling bytes v0.4.12 [INFO] [stderr] Compiling futures-cpupool v0.1.8 [INFO] [stderr] Compiling mio v0.6.19 [INFO] [stderr] Compiling signal-hook v0.1.9 [INFO] [stderr] Compiling flate2 v1.0.9 [INFO] [stderr] Compiling cookie v0.12.0 [INFO] [stderr] Compiling error-chain v0.12.1 [INFO] [stderr] Compiling tempdir v0.3.7 [INFO] [stderr] Compiling uuid v0.6.5 [INFO] [stderr] Compiling tokio-io v0.1.12 [INFO] [stderr] Compiling http v0.1.17 [INFO] [stderr] Compiling tokio-buf v0.1.1 [INFO] [stderr] Compiling string v0.2.0 [INFO] [stderr] Compiling phf_generator v0.7.24 [INFO] [stderr] Compiling parking_lot_core v0.4.0 [INFO] [stderr] Compiling tokio-threadpool v0.1.14 [INFO] [stderr] Compiling uuid v0.7.4 [INFO] [stderr] Compiling chrono v0.4.7 [INFO] [stderr] Compiling regex v1.1.7 [INFO] [stderr] Compiling phf_codegen v0.7.24 [INFO] [stderr] Compiling string_cache_codegen v0.4.2 [INFO] [stderr] Compiling parking_lot v0.7.1 [INFO] [stderr] Compiling mime_guess v2.0.0-alpha.6 [INFO] [stderr] Compiling tokio-reactor v0.1.9 [INFO] [stderr] Compiling synstructure v0.10.2 [INFO] [stderr] Compiling string_cache v0.6.2 [INFO] [stderr] Compiling markup5ever v0.3.2 [INFO] [stderr] Compiling tokio-tcp v0.1.3 [INFO] [stderr] Compiling publicsuffix v1.5.2 [INFO] [stderr] Compiling os_type v2.2.0 [INFO] [stderr] Compiling num v0.2.0 [INFO] [stderr] Compiling tokio v0.1.21 [INFO] [stderr] Compiling h2 v0.1.24 [INFO] [stderr] Compiling http-body v0.1.0 [INFO] [stderr] Compiling serde_derive v1.0.93 [INFO] [stderr] Compiling failure_derive v0.1.5 [INFO] [stderr] Compiling failure v0.1.5 [INFO] [stderr] Compiling hyper v0.12.30 [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 serde_yaml v0.8.9 [INFO] [stderr] Compiling rust_decimal v1.0.1 [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 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 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 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 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) -> Result { [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` [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>` is not implemented for `std::result::Result` [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 { 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` [INFO] [stdout] | this function returns a `Result` [INFO] [stdout] | [INFO] [stdout] = help: the trait `FromResidual>` is not implemented for `std::result::Result` [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 { 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` [INFO] [stdout] | this function returns a `Result` [INFO] [stdout] | [INFO] [stdout] = help: the trait `FromResidual>` is not implemented for `std::result::Result` [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 { 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` [INFO] [stdout] | this function returns a `Result` [INFO] [stdout] | [INFO] [stdout] = help: the trait `FromResidual>` is not implemented for `std::result::Result` [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 { 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` [INFO] [stdout] | this function returns a `Result` [INFO] [stdout] | [INFO] [stdout] = help: the trait `FromResidual>` is not implemented for `std::result::Result` [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 { 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` [INFO] [stdout] | this function returns a `Result` [INFO] [stdout] | [INFO] [stdout] = help: the trait `FromResidual>` is not implemented for `std::result::Result` [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 { 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` [INFO] [stdout] | this function returns a `Result` [INFO] [stdout] | [INFO] [stdout] = help: the trait `FromResidual>` is not implemented for `std::result::Result` [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> { [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, 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>` 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/crawlers/immoscout.rs:93:49 [INFO] [stdout] | [INFO] [stdout] 70 | / fn extract_data(&self, data: String) -> Result> { [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, 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>` 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/crawlers/immoscout.rs:96:44 [INFO] [stdout] | [INFO] [stdout] 70 | / fn extract_data(&self, data: String) -> Result> { [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, 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>` 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/crawlers/immoscout.rs:98:47 [INFO] [stdout] | [INFO] [stdout] 70 | / fn extract_data(&self, data: String) -> Result> { [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, 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>` 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/crawlers/immoscout.rs:100:45 [INFO] [stdout] | [INFO] [stdout] 70 | / fn extract_data(&self, data: String) -> Result> { [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, 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>` 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/crawlers/immoscout.rs:101:42 [INFO] [stdout] | [INFO] [stdout] 70 | / fn extract_data(&self, data: String) -> Result> { [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, 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>` is not implemented for `std::result::Result, 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 = 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>` 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 = 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>` 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 = 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>` 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 = 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>` 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` due to 24 previous errors; 5 warnings emitted [INFO] running `Command { std: "docker" "inspect" "2b8c9f18ee8061090e06b57f1cc77ad603abe0d6db1fe1e3d1df92027d21bb57", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2b8c9f18ee8061090e06b57f1cc77ad603abe0d6db1fe1e3d1df92027d21bb57", kill_on_drop: false }` [INFO] [stdout] 2b8c9f18ee8061090e06b57f1cc77ad603abe0d6db1fe1e3d1df92027d21bb57