[INFO] cloning repository https://github.com/Majavar/map-generator [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Majavar/map-generator" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMajavar%2Fmap-generator", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMajavar%2Fmap-generator'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] a7ce4c0ea9c91a987849d1f8342472afb5624074 [INFO] checking Majavar/map-generator/a7ce4c0ea9c91a987849d1f8342472afb5624074 against try#7014e13d5becc920d4bea3cd87942c8a13d359bf+rustflags=-Dtail_expr_drop_order for pr-129864 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMajavar%2Fmap-generator" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/Majavar/map-generator on toolchain 7014e13d5becc920d4bea3cd87942c8a13d359bf [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+7014e13d5becc920d4bea3cd87942c8a13d359bf" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/Majavar/map-generator [INFO] finished tweaking git repo https://github.com/Majavar/map-generator [INFO] tweaked toml for git repo https://github.com/Majavar/map-generator written to /workspace/builds/worker-6-tc2/source/Cargo.toml [INFO] crate git repo https://github.com/Majavar/map-generator 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" "+7014e13d5becc920d4bea3cd87942c8a13d359bf" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2021 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:ceb6ea022f8a89cebbe621bb4987e73a935bd40dfbb726f832cfff4742a5b95a" "/opt/rustwide/cargo-home/bin/cargo" "+7014e13d5becc920d4bea3cd87942c8a13d359bf" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 6aeac290fa4490d7c56c00a630c3865ad079edd92679a3517aa29db712d8f4ab [INFO] running `Command { std: "docker" "start" "-a" "6aeac290fa4490d7c56c00a630c3865ad079edd92679a3517aa29db712d8f4ab", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "6aeac290fa4490d7c56c00a630c3865ad079edd92679a3517aa29db712d8f4ab", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6aeac290fa4490d7c56c00a630c3865ad079edd92679a3517aa29db712d8f4ab", kill_on_drop: false }` [INFO] [stdout] 6aeac290fa4490d7c56c00a630c3865ad079edd92679a3517aa29db712d8f4ab [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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 -Dtail_expr_drop_order" "-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:ceb6ea022f8a89cebbe621bb4987e73a935bd40dfbb726f832cfff4742a5b95a" "/opt/rustwide/cargo-home/bin/cargo" "+7014e13d5becc920d4bea3cd87942c8a13d359bf" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] f8459f6398bd7f6131d286f39f04ed5349d331259532885424e3029ed4cb77df [INFO] running `Command { std: "docker" "start" "-a" "f8459f6398bd7f6131d286f39f04ed5349d331259532885424e3029ed4cb77df", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2021 [INFO] [stderr] Compiling autocfg v0.1.6 [INFO] [stderr] Compiling libc v0.2.62 [INFO] [stderr] Checking cfg-if v0.1.9 [INFO] [stderr] Compiling arrayvec v0.4.11 [INFO] [stderr] Checking lazy_static v1.3.0 [INFO] [stderr] Checking nodrop v0.1.13 [INFO] [stderr] Compiling unicode-xid v0.0.4 [INFO] [stderr] Checking scopeguard v1.0.0 [INFO] [stderr] Compiling byteorder v1.3.2 [INFO] [stderr] Compiling rayon-core v1.5.0 [INFO] [stderr] Compiling quote v0.3.15 [INFO] [stderr] Checking adler32 v1.0.3 [INFO] [stderr] Checking either v1.5.2 [INFO] [stderr] Checking bitflags v0.7.0 [INFO] [stderr] Checking color_quant v1.0.1 [INFO] [stderr] Compiling memoffset v0.5.1 [INFO] [stderr] Checking inflate v0.1.1 [INFO] [stderr] Checking lzw v0.10.0 [INFO] [stderr] Compiling synom v0.11.3 [INFO] [stderr] Checking crossbeam-utils v0.6.6 [INFO] [stderr] Compiling bitflags v1.1.0 [INFO] [stderr] Checking linked-hash-map v0.3.0 [INFO] [stderr] Compiling derive_builder v0.4.7 [INFO] [stderr] Checking serde v0.9.15 [INFO] [stderr] Checking scoped_threadpool v0.1.9 [INFO] [stderr] Checking gif v0.9.2 [INFO] [stderr] Compiling syn v0.11.11 [INFO] [stderr] Checking yaml-rust v0.3.5 [INFO] [stderr] Compiling num-traits v0.2.8 [INFO] [stderr] Compiling num-integer v0.1.41 [INFO] [stderr] Compiling num-iter v0.1.39 [INFO] [stderr] Checking crossbeam-queue v0.1.2 [INFO] [stderr] Checking deflate v0.7.20 [INFO] [stderr] Checking crossbeam-epoch v0.7.2 [INFO] [stderr] Checking crossbeam-deque v0.6.3 [INFO] [stderr] Checking num_cpus v1.10.1 [INFO] [stderr] Checking rand v0.4.6 [INFO] [stderr] Checking atty v0.2.13 [INFO] [stderr] Checking clap v2.33.0 [INFO] [stderr] Checking rayon v1.1.0 [INFO] [stderr] Compiling serde_codegen_internals v0.14.2 [INFO] [stderr] Compiling derive_builder_core v0.1.7 [INFO] [stderr] Checking num-traits v0.1.43 [INFO] [stderr] Checking rand v0.3.23 [INFO] [stderr] Checking enum_primitive v0.1.1 [INFO] [stderr] Checking noise2d v0.1.0 (/opt/rustwide/workdir/noise2d) [INFO] [stderr] Checking heightmap v0.1.0 (/opt/rustwide/workdir/heightmap) [INFO] [stderr] Checking num-rational v0.1.42 [INFO] [stderr] Compiling serde_derive v0.9.15 [INFO] [stderr] Checking png v0.6.2 [INFO] [stderr] Checking serde_yaml v0.6.2 [INFO] [stderr] Checking jpeg-decoder v0.1.15 [INFO] [stderr] Checking image v0.12.4 [INFO] [stderr] Checking image v0.1.0 (/opt/rustwide/workdir/image) [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> image/src/shade.rs:60:13 [INFO] [stdout] | [INFO] [stdout] 60 | (self.get(x + 1, y) - self.get(x - 1, y)) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 60 - (self.get(x + 1, y) - self.get(x - 1, y)) [INFO] [stdout] 60 + self.get(x + 1, y) - self.get(x - 1, y) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> image/src/shade.rs:68:13 [INFO] [stdout] | [INFO] [stdout] 68 | (self.get(x, y + 1) - self.get(x, y - 1)) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 68 - (self.get(x, y + 1) - self.get(x, y - 1)) [INFO] [stdout] 68 + self.get(x, y + 1) - self.get(x, y - 1) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> image/src/color_ramp.rs:56:17 [INFO] [stdout] | [INFO] [stdout] 56 | #[derive(Clone, Deserialize, Serialize, Debug, Default)] [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `ColorRamp` is not local [INFO] [stdout] | `Deserialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_ColorRamp` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue [INFO] [stdout] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stdout] = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> image/src/color_ramp.rs:56:30 [INFO] [stdout] | [INFO] [stdout] 56 | #[derive(Clone, Deserialize, Serialize, Debug, Default)] [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `ColorRamp` is not local [INFO] [stdout] | `Serialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_SERIALIZE_FOR_ColorRamp` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Serialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Serialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue [INFO] [stdout] = note: this warning originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 4 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking map-generator v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> src/config.rs:255:100 [INFO] [stdout] | [INFO] [stdout] 255 | serde_yaml::from_str(contents.as_str()).map_err(|e| io::Error::new(io::ErrorKind::Other, e.description())) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> src/config.rs:262:92 [INFO] [stdout] | [INFO] [stdout] 262 | serde_yaml::to_string(self).map_err(|e| io::Error::new(io::ErrorKind::Other, e.description()))?; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> src/main.rs:49:78 [INFO] [stdout] | [INFO] [stdout] 49 | .validator(|s| usize::from_str(&s).map(|_| ()).map_err(|e| e.description().to_string())), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> src/config.rs:255:100 [INFO] [stdout] | [INFO] [stdout] 255 | serde_yaml::from_str(contents.as_str()).map_err(|e| io::Error::new(io::ErrorKind::Other, e.description())) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> src/config.rs:262:92 [INFO] [stdout] | [INFO] [stdout] 262 | serde_yaml::to_string(self).map_err(|e| io::Error::new(io::ErrorKind::Other, e.description()))?; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> src/main.rs:49:78 [INFO] [stdout] | [INFO] [stdout] 49 | .validator(|s| usize::from_str(&s).map(|_| ()).map_err(|e| e.description().to_string())), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/config.rs:175:26 [INFO] [stdout] | [INFO] [stdout] 175 | #[derive(Builder, Debug, Deserialize, Serialize)] [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `MapGeneratorConfig` is not local [INFO] [stdout] | `Deserialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_MapGeneratorConfig` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue [INFO] [stdout] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stdout] = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/config.rs:175:39 [INFO] [stdout] | [INFO] [stdout] 175 | #[derive(Builder, Debug, Deserialize, Serialize)] [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `MapGeneratorConfig` is not local [INFO] [stdout] | `Serialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_SERIALIZE_FOR_MapGeneratorConfig` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Serialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Serialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue [INFO] [stdout] = note: this warning originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 5 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/config.rs:175:26 [INFO] [stdout] | [INFO] [stdout] 175 | #[derive(Builder, Debug, Deserialize, Serialize)] [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `MapGeneratorConfig` is not local [INFO] [stdout] | `Deserialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_MapGeneratorConfig` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue [INFO] [stdout] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stdout] = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/config.rs:175:39 [INFO] [stdout] | [INFO] [stdout] 175 | #[derive(Builder, Debug, Deserialize, Serialize)] [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `MapGeneratorConfig` is not local [INFO] [stdout] | `Serialize` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_IMPL_SERIALIZE_FOR_MapGeneratorConfig` [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Serialize` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Serialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue [INFO] [stdout] = note: this warning originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 5 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.64s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: bitflags v0.7.0 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 3` [INFO] running `Command { std: "docker" "inspect" "f8459f6398bd7f6131d286f39f04ed5349d331259532885424e3029ed4cb77df", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f8459f6398bd7f6131d286f39f04ed5349d331259532885424e3029ed4cb77df", kill_on_drop: false }` [INFO] [stdout] f8459f6398bd7f6131d286f39f04ed5349d331259532885424e3029ed4cb77df