[INFO] cloning repository https://github.com/Norbytus/wallhave_api [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Norbytus/wallhave_api" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FNorbytus%2Fwallhave_api", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FNorbytus%2Fwallhave_api'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 36127cb9d8028dc20dbb19ad0f64669f9a40b6c4 [INFO] checking Norbytus/wallhave_api against master#22572d0994593197593e2a1b7b18d720a9a349a7 for pr-126452-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FNorbytus%2Fwallhave_api" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/Norbytus/wallhave_api on toolchain 22572d0994593197593e2a1b7b18d720a9a349a7 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+22572d0994593197593e2a1b7b18d720a9a349a7" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/Norbytus/wallhave_api [INFO] finished tweaking git repo https://github.com/Norbytus/wallhave_api [INFO] tweaked toml for git repo https://github.com/Norbytus/wallhave_api written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/Norbytus/wallhave_api already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+22572d0994593197593e2a1b7b18d720a9a349a7" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded serde v1.0.98 [INFO] [stderr] Downloaded serde_derive v1.0.98 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:923055f121b5182466d55868a8b05e67af8ba4a3a3f6bad814e953ca3cd3ac2a" "/opt/rustwide/cargo-home/bin/cargo" "+22572d0994593197593e2a1b7b18d720a9a349a7" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 302a7a5f988876b898f15a82c67a822581359e74be82e0df7dcd9a1adf08e5aa [INFO] running `Command { std: "docker" "start" "-a" "302a7a5f988876b898f15a82c67a822581359e74be82e0df7dcd9a1adf08e5aa", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "302a7a5f988876b898f15a82c67a822581359e74be82e0df7dcd9a1adf08e5aa", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "302a7a5f988876b898f15a82c67a822581359e74be82e0df7dcd9a1adf08e5aa", kill_on_drop: false }` [INFO] [stdout] 302a7a5f988876b898f15a82c67a822581359e74be82e0df7dcd9a1adf08e5aa [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:923055f121b5182466d55868a8b05e67af8ba4a3a3f6bad814e953ca3cd3ac2a" "/opt/rustwide/cargo-home/bin/cargo" "+22572d0994593197593e2a1b7b18d720a9a349a7" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] a3b0119ec78c63e1c2a7c0738be6499a39015f770f993c73ba2aa29dc96a617d [INFO] running `Command { std: "docker" "start" "-a" "a3b0119ec78c63e1c2a7c0738be6499a39015f770f993c73ba2aa29dc96a617d", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v0.4.30 [INFO] [stderr] Compiling serde v1.0.98 [INFO] [stderr] Compiling libc v0.2.61 [INFO] [stderr] Compiling ryu v1.0.0 [INFO] [stderr] Compiling bitflags v1.1.0 [INFO] [stderr] Compiling syn v0.15.44 [INFO] [stderr] Checking unicode-width v0.1.5 [INFO] [stderr] Checking strsim v0.8.0 [INFO] [stderr] Checking itoa v0.4.4 [INFO] [stderr] Checking vec_map v0.8.1 [INFO] [stderr] Checking yaml-rust v0.3.5 [INFO] [stderr] Checking ansi_term v0.11.0 [INFO] [stderr] Checking textwrap v0.11.0 [INFO] [stderr] Compiling quote v0.6.13 [INFO] [stderr] Checking atty v0.2.13 [INFO] [stderr] Checking clap v2.33.0 [INFO] [stderr] Compiling serde_derive v1.0.98 [INFO] [stderr] Checking serde_json v1.0.40 [INFO] [stderr] Checking toml v0.5.3 [INFO] [stderr] Checking wallhaven v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `Path` [INFO] [stdout] --> src/main.rs:8:17 [INFO] [stdout] | [INFO] [stdout] 8 | use std::path::{Path, PathBuf}; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::env::home_dir`: This function's behavior may be unexpected on Windows. Consider using a crate from crates.io instead. [INFO] [stdout] --> src/main.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | use std::env::home_dir; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::env::home_dir`: This function's behavior may be unexpected on Windows. Consider using a crate from crates.io instead. [INFO] [stdout] --> src/main.rs:53:38 [INFO] [stdout] | [INFO] [stdout] 53 | let mut home_dir_path: PathBuf = home_dir().expect("Can't find home directory"); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Path` [INFO] [stdout] --> src/main.rs:8:17 [INFO] [stdout] | [INFO] [stdout] 8 | use std::path::{Path, PathBuf}; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::env::home_dir`: This function's behavior may be unexpected on Windows. Consider using a crate from crates.io instead. [INFO] [stdout] --> src/main.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | use std::env::home_dir; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::env::home_dir`: This function's behavior may be unexpected on Windows. Consider using a crate from crates.io instead. [INFO] [stdout] --> src/main.rs:53:38 [INFO] [stdout] | [INFO] [stdout] 53 | let mut home_dir_path: PathBuf = home_dir().expect("Can't find home directory"); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/main.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | init_conf_dir(&config); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 17 | let _ = init_conf_dir(&config); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 4 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/main.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | init_conf_dir(&config); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 17 | let _ = init_conf_dir(&config); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 4 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.26s [INFO] running `Command { std: "docker" "inspect" "a3b0119ec78c63e1c2a7c0738be6499a39015f770f993c73ba2aa29dc96a617d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a3b0119ec78c63e1c2a7c0738be6499a39015f770f993c73ba2aa29dc96a617d", kill_on_drop: false }` [INFO] [stdout] a3b0119ec78c63e1c2a7c0738be6499a39015f770f993c73ba2aa29dc96a617d [INFO] checking Norbytus/wallhave_api against try#6289438dbad80b1a0029c66dd3f6abf57c2c51be for pr-126452-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FNorbytus%2Fwallhave_api" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/Norbytus/wallhave_api on toolchain 6289438dbad80b1a0029c66dd3f6abf57c2c51be [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+6289438dbad80b1a0029c66dd3f6abf57c2c51be" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/Norbytus/wallhave_api [INFO] finished tweaking git repo https://github.com/Norbytus/wallhave_api [INFO] tweaked toml for git repo https://github.com/Norbytus/wallhave_api written to /workspace/builds/worker-0-tc2/source/Cargo.toml [INFO] crate git repo https://github.com/Norbytus/wallhave_api already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+6289438dbad80b1a0029c66dd3f6abf57c2c51be" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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:923055f121b5182466d55868a8b05e67af8ba4a3a3f6bad814e953ca3cd3ac2a" "/opt/rustwide/cargo-home/bin/cargo" "+6289438dbad80b1a0029c66dd3f6abf57c2c51be" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] dc8b2ade904e01b97e98b1aef548bfec620b7ef14a5a6f50de7c17058f2a7f1b [INFO] running `Command { std: "docker" "start" "-a" "dc8b2ade904e01b97e98b1aef548bfec620b7ef14a5a6f50de7c17058f2a7f1b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "dc8b2ade904e01b97e98b1aef548bfec620b7ef14a5a6f50de7c17058f2a7f1b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "dc8b2ade904e01b97e98b1aef548bfec620b7ef14a5a6f50de7c17058f2a7f1b", kill_on_drop: false }` [INFO] [stdout] dc8b2ade904e01b97e98b1aef548bfec620b7ef14a5a6f50de7c17058f2a7f1b [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:923055f121b5182466d55868a8b05e67af8ba4a3a3f6bad814e953ca3cd3ac2a" "/opt/rustwide/cargo-home/bin/cargo" "+6289438dbad80b1a0029c66dd3f6abf57c2c51be" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] c74f7c9d7c0258d14807ab81f4ed9f8e83f490d98bc5b613e5237ade29678b0f [INFO] running `Command { std: "docker" "start" "-a" "c74f7c9d7c0258d14807ab81f4ed9f8e83f490d98bc5b613e5237ade29678b0f", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v0.4.30 [INFO] [stderr] Compiling libc v0.2.61 [INFO] [stderr] Compiling serde v1.0.98 [INFO] [stderr] Compiling ryu v1.0.0 [INFO] [stderr] Compiling syn v0.15.44 [INFO] [stderr] Compiling bitflags v1.1.0 [INFO] [stderr] Checking unicode-width v0.1.5 [INFO] [stderr] Checking itoa v0.4.4 [INFO] [stderr] Checking vec_map v0.8.1 [INFO] [stderr] Checking strsim v0.8.0 [INFO] [stderr] Checking yaml-rust v0.3.5 [INFO] [stderr] Checking ansi_term v0.11.0 [INFO] [stderr] Checking textwrap v0.11.0 [INFO] [stderr] Compiling quote v0.6.13 [INFO] [stderr] Checking atty v0.2.13 [INFO] [stderr] Checking clap v2.33.0 [INFO] [stderr] Compiling serde_derive v1.0.98 [INFO] [stderr] Checking toml v0.5.3 [INFO] [stderr] Checking serde_json v1.0.40 [INFO] [stderr] Checking wallhaven v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `Path` [INFO] [stdout] --> src/main.rs:8:17 [INFO] [stdout] | [INFO] [stdout] 8 | use std::path::{Path, PathBuf}; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::env::home_dir`: This function's behavior may be unexpected on Windows. Consider using a crate from crates.io instead. [INFO] [stdout] --> src/main.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | use std::env::home_dir; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::env::home_dir`: This function's behavior may be unexpected on Windows. Consider using a crate from crates.io instead. [INFO] [stdout] --> src/main.rs:53:38 [INFO] [stdout] | [INFO] [stdout] 53 | let mut home_dir_path: PathBuf = home_dir().expect("Can't find home directory"); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Path` [INFO] [stdout] --> src/main.rs:8:17 [INFO] [stdout] | [INFO] [stdout] 8 | use std::path::{Path, PathBuf}; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::env::home_dir`: This function's behavior may be unexpected on Windows. Consider using a crate from crates.io instead. [INFO] [stdout] --> src/main.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | use std::env::home_dir; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::env::home_dir`: This function's behavior may be unexpected on Windows. Consider using a crate from crates.io instead. [INFO] [stdout] --> src/main.rs:53:38 [INFO] [stdout] | [INFO] [stdout] 53 | let mut home_dir_path: PathBuf = home_dir().expect("Can't find home directory"); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/main.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | init_conf_dir(&config); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 17 | let _ = init_conf_dir(&config); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/main.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | init_conf_dir(&config); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 17 | let _ = init_conf_dir(&config); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 4 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 4 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.64s [INFO] running `Command { std: "docker" "inspect" "c74f7c9d7c0258d14807ab81f4ed9f8e83f490d98bc5b613e5237ade29678b0f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c74f7c9d7c0258d14807ab81f4ed9f8e83f490d98bc5b613e5237ade29678b0f", kill_on_drop: false }` [INFO] [stdout] c74f7c9d7c0258d14807ab81f4ed9f8e83f490d98bc5b613e5237ade29678b0f