[INFO] crate fatfs 0.3.1 is already in cache [INFO] extracting crate fatfs 0.3.1 into work/ex/clippy-test-run/sources/stable/reg/fatfs/0.3.1 [INFO] extracting crate fatfs 0.3.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/fatfs/0.3.1 [INFO] validating manifest of fatfs-0.3.1 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of fatfs-0.3.1 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing fatfs-0.3.1 [INFO] finished frobbing fatfs-0.3.1 [INFO] frobbed toml for fatfs-0.3.1 written to work/ex/clippy-test-run/sources/stable/reg/fatfs/0.3.1/Cargo.toml [INFO] started frobbing fatfs-0.3.1 [INFO] finished frobbing fatfs-0.3.1 [INFO] frobbed toml for fatfs-0.3.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/fatfs/0.3.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting fatfs-0.3.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/fatfs/0.3.1:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 4019b3dec23745c8922f0e68082e72b3154563e2b5d82debfd1d4b55a3e9b72a [INFO] running `"docker" "start" "-a" "4019b3dec23745c8922f0e68082e72b3154563e2b5d82debfd1d4b55a3e9b72a"` [INFO] [stderr] Checking fscommon v0.1.0 [INFO] [stderr] Checking fatfs v0.3.1 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/dir.rs:442:9 [INFO] [stderr] | [INFO] [stderr] 442 | / return Ok(DirEntry { [INFO] [stderr] 443 | | data: raw_entry, [INFO] [stderr] 444 | | short_name, [INFO] [stderr] 445 | | lfn_utf16, [INFO] [stderr] ... | [INFO] [stderr] 448 | | offset_range: (start_pos, end_pos), [INFO] [stderr] 449 | | }); [INFO] [stderr] | |___________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 442 | Ok(DirEntry { [INFO] [stderr] 443 | data: raw_entry, [INFO] [stderr] 444 | short_name, [INFO] [stderr] 445 | lfn_utf16, [INFO] [stderr] 446 | fs: self.fs, [INFO] [stderr] 447 | entry_pos: abs_pos.unwrap(), // SAFE: abs_pos is absent only for empty file [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/dir.rs:644:9 [INFO] [stderr] | [INFO] [stderr] 644 | return self.index == 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.index == 0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/dir.rs:974:9 [INFO] [stderr] | [INFO] [stderr] 974 | return [c1, c2, c3, c4]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `[c1, c2, c3, c4]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/fs.rs:343:27 [INFO] [stderr] | [INFO] [stderr] 343 | const LEAD_SIG: u32 = 0x41615252; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x4161_5252` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/fs.rs:344:28 [INFO] [stderr] | [INFO] [stderr] 344 | const STRUC_SIG: u32 = 0x61417272; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x6141_7272` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/fs.rs:345:28 [INFO] [stderr] | [INFO] [stderr] 345 | const TRAIL_SIG: u32 = 0xAA550000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xAA55_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/fs.rs:359:13 [INFO] [stderr] | [INFO] [stderr] 359 | 0xFFFFFFFF => None, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/fs.rs:364:13 [INFO] [stderr] | [INFO] [stderr] 364 | 0xFFFFFFFF => None, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/fs.rs:390:73 [INFO] [stderr] | [INFO] [stderr] 390 | wrt.write_u32::(self.free_cluster_count.unwrap_or(0xFFFFFFFF))?; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/fs.rs:391:72 [INFO] [stderr] | [INFO] [stderr] 391 | wrt.write_u32::(self.next_free_cluster.unwrap_or(0xFFFFFFFF))?; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:279:50 [INFO] [stderr] | [INFO] [stderr] 279 | let val = Self::get_raw(fat, cluster)? & 0x0FFFFFFF; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:281:29 [INFO] [stderr] | [INFO] [stderr] 281 | 0 if cluster >= 0x0FFFFFF7 && cluster <= 0x0FFFFFFF => { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFF7` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:281:54 [INFO] [stderr] | [INFO] [stderr] 281 | 0 if cluster >= 0x0FFFFFF7 && cluster <= 0x0FFFFFFF => { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:282:41 [INFO] [stderr] | [INFO] [stderr] 282 | let tmp = if cluster == 0x0FFFFFF7 { "BAD_CLUSTER" } else { "end-of-chain" }; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFF7` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:290:13 [INFO] [stderr] | [INFO] [stderr] 290 | 0x0FFFFFF7 => FatValue::Bad, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFF7` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:291:13 [INFO] [stderr] | [INFO] [stderr] 291 | 0x0FFFFFF8...0x0FFFFFFF => FatValue::EndOfChain, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFF8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:291:26 [INFO] [stderr] | [INFO] [stderr] 291 | 0x0FFFFFF8...0x0FFFFFFF => FatValue::EndOfChain, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:292:29 [INFO] [stderr] | [INFO] [stderr] 292 | n if cluster >= 0x0FFFFFF7 && cluster <= 0x0FFFFFFF => { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFF7` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:292:54 [INFO] [stderr] | [INFO] [stderr] 292 | n if cluster >= 0x0FFFFFF7 && cluster <= 0x0FFFFFFF => { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:293:41 [INFO] [stderr] | [INFO] [stderr] 293 | let tmp = if cluster == 0x0FFFFFF7 { "BAD_CLUSTER" } else { "end-of-chain" }; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFF7` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:302:64 [INFO] [stderr] | [INFO] [stderr] 302 | let old_reserved_bits = Self::get_raw(fat, cluster)? & 0xF0000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xF000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:305:50 [INFO] [stderr] | [INFO] [stderr] 305 | if value == FatValue::Free && cluster >= 0x0FFFFFF7 && cluster <= 0x0FFFFFFF { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFF7` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:305:75 [INFO] [stderr] | [INFO] [stderr] 305 | if value == FatValue::Free && cluster >= 0x0FFFFFF7 && cluster <= 0x0FFFFFFF { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:309:37 [INFO] [stderr] | [INFO] [stderr] 309 | let tmp = if cluster == 0x0FFFFFF7 { "BAD_CLUSTER" } else { "end-of-chain" }; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFF7` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:317:30 [INFO] [stderr] | [INFO] [stderr] 317 | FatValue::Bad => 0x0FFFFFF7, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFF7` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:318:37 [INFO] [stderr] | [INFO] [stderr] 318 | FatValue::EndOfChain => 0x0FFFFFFF, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:330:57 [INFO] [stderr] | [INFO] [stderr] 330 | let val = fat.read_u32::()? & 0x0FFFFFFF; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:344:57 [INFO] [stderr] | [INFO] [stderr] 344 | let val = fat.read_u32::()? & 0x0FFFFFFF; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir.rs:28:9 [INFO] [stderr] | [INFO] [stderr] 28 | / match self { [INFO] [stderr] 29 | | &DirRawStream::File(ref file) => file.abs_pos(), [INFO] [stderr] 30 | | &DirRawStream::Root(ref slice) => Some(slice.abs_pos()), [INFO] [stderr] 31 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 28 | match *self { [INFO] [stderr] 29 | DirRawStream::File(ref file) => file.abs_pos(), [INFO] [stderr] 30 | DirRawStream::Root(ref slice) => Some(slice.abs_pos()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir.rs:35:9 [INFO] [stderr] | [INFO] [stderr] 35 | / match self { [INFO] [stderr] 36 | | &DirRawStream::File(ref file) => file.first_cluster(), [INFO] [stderr] 37 | | &DirRawStream::Root(_) => None, [INFO] [stderr] 38 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 35 | match *self { [INFO] [stderr] 36 | DirRawStream::File(ref file) => file.first_cluster(), [INFO] [stderr] 37 | DirRawStream::Root(_) => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | / match self { [INFO] [stderr] 46 | | &DirRawStream::File(ref file) => DirRawStream::File(file.clone()), [INFO] [stderr] 47 | | &DirRawStream::Root(ref raw) => DirRawStream::Root(raw.clone()), [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 45 | match *self { [INFO] [stderr] 46 | DirRawStream::File(ref file) => DirRawStream::File(file.clone()), [INFO] [stderr] 47 | DirRawStream::Root(ref raw) => DirRawStream::Root(raw.clone()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | / match self { [INFO] [stderr] 55 | | &mut DirRawStream::File(ref mut file) => file.read(buf), [INFO] [stderr] 56 | | &mut DirRawStream::Root(ref mut raw) => raw.read(buf), [INFO] [stderr] 57 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 54 | match *self { [INFO] [stderr] 55 | DirRawStream::File(ref mut file) => file.read(buf), [INFO] [stderr] 56 | DirRawStream::Root(ref mut raw) => raw.read(buf), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | / match self { [INFO] [stderr] 64 | | &mut DirRawStream::File(ref mut file) => file.write(buf), [INFO] [stderr] 65 | | &mut DirRawStream::Root(ref mut raw) => raw.write(buf), [INFO] [stderr] 66 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 63 | match *self { [INFO] [stderr] 64 | DirRawStream::File(ref mut file) => file.write(buf), [INFO] [stderr] 65 | DirRawStream::Root(ref mut raw) => raw.write(buf), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | / match self { [INFO] [stderr] 70 | | &mut DirRawStream::File(ref mut file) => file.flush(), [INFO] [stderr] 71 | | &mut DirRawStream::Root(ref mut raw) => raw.flush(), [INFO] [stderr] 72 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 69 | match *self { [INFO] [stderr] 70 | DirRawStream::File(ref mut file) => file.flush(), [INFO] [stderr] 71 | DirRawStream::Root(ref mut raw) => raw.flush(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | / match self { [INFO] [stderr] 79 | | &mut DirRawStream::File(ref mut file) => file.seek(pos), [INFO] [stderr] 80 | | &mut DirRawStream::Root(ref mut raw) => raw.seek(pos), [INFO] [stderr] 81 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 78 | match *self { [INFO] [stderr] 79 | DirRawStream::File(ref mut file) => file.seek(pos), [INFO] [stderr] 80 | DirRawStream::Root(ref mut raw) => raw.seek(pos), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/dir.rs:85:1 [INFO] [stderr] | [INFO] [stderr] 85 | / fn split_path<'c>(path: &'c str) -> (&'c str, Option<&'c str>) { [INFO] [stderr] 86 | | // remove trailing slash and split into 2 components - top-most parent and rest [INFO] [stderr] 87 | | let mut path_split = path.trim_matches('/').splitn(2, "/"); [INFO] [stderr] 88 | | let comp = path_split.next().unwrap(); // SAFE: splitn always returns at least one element [INFO] [stderr] 89 | | let rest_opt = path_split.next(); [INFO] [stderr] 90 | | (comp, rest_opt) [INFO] [stderr] 91 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/dir.rs:87:59 [INFO] [stderr] | [INFO] [stderr] 87 | let mut path_split = path.trim_matches('/').splitn(2, "/"); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/dir.rs:442:9 [INFO] [stderr] | [INFO] [stderr] 442 | / return Ok(DirEntry { [INFO] [stderr] 443 | | data: raw_entry, [INFO] [stderr] 444 | | short_name, [INFO] [stderr] 445 | | lfn_utf16, [INFO] [stderr] ... | [INFO] [stderr] 448 | | offset_range: (start_pos, end_pos), [INFO] [stderr] 449 | | }); [INFO] [stderr] | |___________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 442 | Ok(DirEntry { [INFO] [stderr] 443 | data: raw_entry, [INFO] [stderr] 444 | short_name, [INFO] [stderr] 445 | lfn_utf16, [INFO] [stderr] 446 | fs: self.fs, [INFO] [stderr] 447 | entry_pos: abs_pos.unwrap(), // SAFE: abs_pos is absent only for empty file [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/dir.rs:644:9 [INFO] [stderr] | [INFO] [stderr] 644 | return self.index == 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.index == 0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/dir.rs:974:9 [INFO] [stderr] | [INFO] [stderr] 974 | return [c1, c2, c3, c4]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `[c1, c2, c3, c4]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/fs.rs:343:27 [INFO] [stderr] | [INFO] [stderr] 343 | const LEAD_SIG: u32 = 0x41615252; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x4161_5252` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/fs.rs:344:28 [INFO] [stderr] | [INFO] [stderr] 344 | const STRUC_SIG: u32 = 0x61417272; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x6141_7272` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/fs.rs:345:28 [INFO] [stderr] | [INFO] [stderr] 345 | const TRAIL_SIG: u32 = 0xAA550000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xAA55_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/fs.rs:359:13 [INFO] [stderr] | [INFO] [stderr] 359 | 0xFFFFFFFF => None, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/fs.rs:364:13 [INFO] [stderr] | [INFO] [stderr] 364 | 0xFFFFFFFF => None, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/fs.rs:390:73 [INFO] [stderr] | [INFO] [stderr] 390 | wrt.write_u32::(self.free_cluster_count.unwrap_or(0xFFFFFFFF))?; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/fs.rs:391:72 [INFO] [stderr] | [INFO] [stderr] 391 | wrt.write_u32::(self.next_free_cluster.unwrap_or(0xFFFFFFFF))?; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:260:24 [INFO] [stderr] | [INFO] [stderr] 260 | if name != ".".as_bytes() && name != "..".as_bytes() { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"."` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:260:50 [INFO] [stderr] | [INFO] [stderr] 260 | if name != ".".as_bytes() && name != "..".as_bytes() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b".."` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:279:50 [INFO] [stderr] | [INFO] [stderr] 279 | let val = Self::get_raw(fat, cluster)? & 0x0FFFFFFF; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:281:29 [INFO] [stderr] | [INFO] [stderr] 281 | 0 if cluster >= 0x0FFFFFF7 && cluster <= 0x0FFFFFFF => { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFF7` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:281:54 [INFO] [stderr] | [INFO] [stderr] 281 | 0 if cluster >= 0x0FFFFFF7 && cluster <= 0x0FFFFFFF => { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:282:41 [INFO] [stderr] | [INFO] [stderr] 282 | let tmp = if cluster == 0x0FFFFFF7 { "BAD_CLUSTER" } else { "end-of-chain" }; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFF7` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:290:13 [INFO] [stderr] | [INFO] [stderr] 290 | 0x0FFFFFF7 => FatValue::Bad, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFF7` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:291:13 [INFO] [stderr] | [INFO] [stderr] 291 | 0x0FFFFFF8...0x0FFFFFFF => FatValue::EndOfChain, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFF8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:291:26 [INFO] [stderr] | [INFO] [stderr] 291 | 0x0FFFFFF8...0x0FFFFFFF => FatValue::EndOfChain, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:292:29 [INFO] [stderr] | [INFO] [stderr] 292 | n if cluster >= 0x0FFFFFF7 && cluster <= 0x0FFFFFFF => { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFF7` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:292:54 [INFO] [stderr] | [INFO] [stderr] 292 | n if cluster >= 0x0FFFFFF7 && cluster <= 0x0FFFFFFF => { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:293:41 [INFO] [stderr] | [INFO] [stderr] 293 | let tmp = if cluster == 0x0FFFFFF7 { "BAD_CLUSTER" } else { "end-of-chain" }; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFF7` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:302:64 [INFO] [stderr] | [INFO] [stderr] 302 | let old_reserved_bits = Self::get_raw(fat, cluster)? & 0xF0000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xF000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:305:50 [INFO] [stderr] | [INFO] [stderr] 305 | if value == FatValue::Free && cluster >= 0x0FFFFFF7 && cluster <= 0x0FFFFFFF { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFF7` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:305:75 [INFO] [stderr] | [INFO] [stderr] 305 | if value == FatValue::Free && cluster >= 0x0FFFFFF7 && cluster <= 0x0FFFFFFF { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:309:37 [INFO] [stderr] | [INFO] [stderr] 309 | let tmp = if cluster == 0x0FFFFFF7 { "BAD_CLUSTER" } else { "end-of-chain" }; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFF7` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:317:30 [INFO] [stderr] | [INFO] [stderr] 317 | FatValue::Bad => 0x0FFFFFF7, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFF7` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:318:37 [INFO] [stderr] | [INFO] [stderr] 318 | FatValue::EndOfChain => 0x0FFFFFFF, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:330:57 [INFO] [stderr] | [INFO] [stderr] 330 | let val = fat.read_u32::()? & 0x0FFFFFFF; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/table.rs:344:57 [INFO] [stderr] | [INFO] [stderr] 344 | let val = fat.read_u32::()? & 0x0FFFFFFF; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0FFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: The function/method `rename` doesn't need a mutable reference [INFO] [stderr] --> src/dir.rs:321:42 [INFO] [stderr] | [INFO] [stderr] 321 | return self.rename(src_path, &mut e.to_dir(), rest); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/dir.rs:412:54 [INFO] [stderr] | [INFO] [stderr] 412 | fn alloc_and_write_lfn_entries(&self, lfn_utf16: &LfnUtf16, short_name: &[u8]) -> io::Result<(DirRawStream<'a, T>, u64)> { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir.rs:487:9 [INFO] [stderr] | [INFO] [stderr] 487 | / match raw_entry { [INFO] [stderr] 488 | | &DirEntryData::File(ref sfn_entry) => self.skip_volume && sfn_entry.is_volume(), [INFO] [stderr] 489 | | _ => false, [INFO] [stderr] 490 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 487 | match *raw_entry { [INFO] [stderr] 488 | DirEntryData::File(ref sfn_entry) => self.skip_volume && sfn_entry.is_volume(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/dir.rs:569:8 [INFO] [stderr] | [INFO] [stderr] 569 | if name.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `name.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `short_name`. [INFO] [stderr] --> src/dir.rs:590:14 [INFO] [stderr] | [INFO] [stderr] 590 | for i in 0..11 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 590 | for in short_name.iter().take(11) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/dir.rs:618:15 [INFO] [stderr] | [INFO] [stderr] 618 | fn to_vec(mut self) -> Vec { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/dir.rs:963:27 [INFO] [stderr] | [INFO] [stderr] 963 | buf[prefix_len] = '~' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'~' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dir.rs:970:36 [INFO] [stderr] | [INFO] [stderr] 970 | let c1 = char::from_digit((x as u32 >> 12) & 0xF, 16).unwrap().to_ascii_uppercase() as u8; [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(x)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dir.rs:971:36 [INFO] [stderr] | [INFO] [stderr] 971 | let c2 = char::from_digit((x as u32 >> 8) & 0xF, 16).unwrap().to_ascii_uppercase() as u8; [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dir.rs:972:36 [INFO] [stderr] | [INFO] [stderr] 972 | let c3 = char::from_digit((x as u32 >> 4) & 0xF, 16).unwrap().to_ascii_uppercase() as u8; [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `x as u32` [INFO] [stderr] --> src/dir.rs:973:35 [INFO] [stderr] | [INFO] [stderr] 973 | let c4 = char::from_digit((x as u32 >> 0) & 0xF, 16).unwrap().to_ascii_uppercase() as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dir.rs:973:36 [INFO] [stderr] | [INFO] [stderr] 973 | let c4 = char::from_digit((x as u32 >> 0) & 0xF, 16).unwrap().to_ascii_uppercase() as u8; [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/dir_entry.rs:54:25 [INFO] [stderr] | [INFO] [stderr] 54 | const PADDING: u8 = ' ' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b' ' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/dir_entry.rs:67:30 [INFO] [stderr] | [INFO] [stderr] 67 | name[name_len] = '.' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'.' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dir_entry.rs:162:18 [INFO] [stderr] | [INFO] [stderr] 162 | let n = ((first_cluster_hi as u32) << 16) | self.first_cluster_lo as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(first_cluster_hi)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dir_entry.rs:162:53 [INFO] [stderr] | [INFO] [stderr] 162 | let n = ((first_cluster_hi as u32) << 16) | self.first_cluster_lo as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.first_cluster_lo)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir_entry.rs:352:9 [INFO] [stderr] | [INFO] [stderr] 352 | / match self { [INFO] [stderr] 353 | | &DirEntryData::File(ref file) => file.serialize(wrt), [INFO] [stderr] 354 | | &DirEntryData::Lfn(ref lfn) => lfn.serialize(wrt), [INFO] [stderr] 355 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 352 | match *self { [INFO] [stderr] 353 | DirEntryData::File(ref file) => file.serialize(wrt), [INFO] [stderr] 354 | DirEntryData::Lfn(ref lfn) => lfn.serialize(wrt), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir_entry.rs:407:9 [INFO] [stderr] | [INFO] [stderr] 407 | / match self { [INFO] [stderr] 408 | | &DirEntryData::File(ref file) => file.is_deleted(), [INFO] [stderr] 409 | | &DirEntryData::Lfn(ref lfn) => lfn.is_deleted(), [INFO] [stderr] 410 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 407 | match *self { [INFO] [stderr] 408 | DirEntryData::File(ref file) => file.is_deleted(), [INFO] [stderr] 409 | DirEntryData::Lfn(ref lfn) => lfn.is_deleted(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir_entry.rs:414:9 [INFO] [stderr] | [INFO] [stderr] 414 | / match self { [INFO] [stderr] 415 | | &mut DirEntryData::File(ref mut file) => file.set_deleted(), [INFO] [stderr] 416 | | &mut DirEntryData::Lfn(ref mut lfn) => lfn.set_deleted(), [INFO] [stderr] 417 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 414 | match *self { [INFO] [stderr] 415 | DirEntryData::File(ref mut file) => file.set_deleted(), [INFO] [stderr] 416 | DirEntryData::Lfn(ref mut lfn) => lfn.set_deleted(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir_entry.rs:421:9 [INFO] [stderr] | [INFO] [stderr] 421 | / match self { [INFO] [stderr] 422 | | &DirEntryData::File(ref file) => file.is_end(), [INFO] [stderr] 423 | | &DirEntryData::Lfn(ref lfn) => lfn.is_end(), [INFO] [stderr] 424 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 421 | match *self { [INFO] [stderr] 422 | DirEntryData::File(ref file) => file.is_end(), [INFO] [stderr] 423 | DirEntryData::Lfn(ref lfn) => lfn.is_end(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: item `dir_entry::DirEntry<'a, T>` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/dir_entry.rs:513:1 [INFO] [stderr] | [INFO] [stderr] 513 | / impl<'a, T: ReadWriteSeek> DirEntry<'a, T> { [INFO] [stderr] 514 | | /// Returns short file name. [INFO] [stderr] 515 | | /// [INFO] [stderr] 516 | | /// Non-ASCII characters are replaced by the replacement character (U+FFFD). [INFO] [stderr] ... | [INFO] [stderr] 628 | | } [INFO] [stderr] 629 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/dir_entry.rs:532:12 [INFO] [stderr] | [INFO] [stderr] 532 | if self.lfn_utf16.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.lfn_utf16.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/dir_entry.rs:590:9 [INFO] [stderr] | [INFO] [stderr] 590 | self.data.size as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.data.size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:80:69 [INFO] [stderr] | [INFO] [stderr] 80 | let offset_in_fs = self.fs.offset_from_cluster(n) + (offset_in_cluster as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(offset_in_cluster)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:210:75 [INFO] [stderr] | [INFO] [stderr] 210 | let offset_in_fs = self.fs.offset_from_cluster(current_cluster) + (offset_in_cluster as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(offset_in_cluster)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/file.rs:277:29 [INFO] [stderr] | [INFO] [stderr] 277 | disk.write(&zero)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:291:75 [INFO] [stderr] | [INFO] [stderr] 291 | let offset_in_fs = self.fs.offset_from_cluster(current_cluster) + (offset_in_cluster as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(offset_in_cluster)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:317:37 [INFO] [stderr] | [INFO] [stderr] 317 | SeekFrom::Current(x) => self.offset as i64 + x, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:320:28 [INFO] [stderr] | [INFO] [stderr] 320 | let size = self.size().expect("cannot seek from end if size is unknown") as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.size().expect("cannot seek from end if size is unknown"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:328:26 [INFO] [stderr] | [INFO] [stderr] 328 | if new_pos > s as i64 { [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(s)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:330:27 [INFO] [stderr] | [INFO] [stderr] 330 | new_pos = s as i64; [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(s)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:334:23 [INFO] [stderr] | [INFO] [stderr] 334 | if new_pos == self.offset as i64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:336:23 [INFO] [stderr] | [INFO] [stderr] 336 | return Ok(self.offset as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:340:41 [INFO] [stderr] | [INFO] [stderr] 340 | let cluster_count = ((new_pos + cluster_size as i64 - 1) / cluster_size as i64 - 1) as isize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(cluster_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:340:68 [INFO] [stderr] | [INFO] [stderr] 340 | let cluster_count = ((new_pos + cluster_size as i64 - 1) / cluster_size as i64 - 1) as isize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(cluster_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:341:35 [INFO] [stderr] | [INFO] [stderr] 341 | let old_cluster_count = ((self.offset as i64 + cluster_size as i64 - 1) / cluster_size as i64 - 1) as isize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:341:56 [INFO] [stderr] | [INFO] [stderr] 341 | let old_cluster_count = ((self.offset as i64 + cluster_size as i64 - 1) / cluster_size as i64 - 1) as isize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(cluster_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:341:83 [INFO] [stderr] | [INFO] [stderr] 341 | let old_cluster_count = ((self.offset as i64 + cluster_size as i64 - 1) / cluster_size as i64 - 1) as isize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(cluster_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:356:60 [INFO] [stderr] | [INFO] [stderr] 356 | new_pos = (i + 1) as i64 * cluster_size as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(cluster_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:372:12 [INFO] [stderr] | [INFO] [stderr] 372 | Ok(self.offset as u64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/fs.rs:61:18 [INFO] [stderr] | [INFO] [stderr] 61 | pub fn dirty(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/fs.rs:66:21 [INFO] [stderr] | [INFO] [stderr] 66 | pub fn io_error(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/fs.rs:70:15 [INFO] [stderr] | [INFO] [stderr] 70 | fn encode(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:207:33 [INFO] [stderr] | [INFO] [stderr] 207 | let bytes_per_cluster = self.bytes_per_sector as u32 * self.sectors_per_cluster as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.bytes_per_sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:207:64 [INFO] [stderr] | [INFO] [stderr] 207 | let bytes_per_cluster = self.bytes_per_sector as u32 * self.sectors_per_cluster as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.sectors_per_cluster)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:273:13 [INFO] [stderr] | [INFO] [stderr] 273 | self.sectors_per_fat_16 as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.sectors_per_fat_16)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:281:13 [INFO] [stderr] | [INFO] [stderr] 281 | self.total_sectors_16 as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.total_sectors_16)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/fs.rs:388:9 [INFO] [stderr] | [INFO] [stderr] 388 | wrt.write(&reserved)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/fs.rs:393:9 [INFO] [stderr] | [INFO] [stderr] 393 | wrt.write(&reserved2)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `fs::FsOptions` [INFO] [stderr] --> src/fs.rs:450:5 [INFO] [stderr] | [INFO] [stderr] 450 | / pub fn new() -> Self { [INFO] [stderr] 451 | | FsOptions { [INFO] [stderr] 452 | | update_accessed_date: false, [INFO] [stderr] 453 | | oem_cp_converter: &LOSSY_OEM_CP_CONVERTER, [INFO] [stderr] 454 | | time_provider: &DEFAULT_TIME_PROVIDER, [INFO] [stderr] 455 | | } [INFO] [stderr] 456 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 448 | impl Default for fs::FsOptions { [INFO] [stderr] 449 | fn default() -> Self { [INFO] [stderr] 450 | Self::new() [INFO] [stderr] 451 | } [INFO] [stderr] 452 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:539:30 [INFO] [stderr] | [INFO] [stderr] 539 | let root_dir_bytes = bpb.root_entries as u32 * DIR_ENTRY_SIZE as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bpb.root_entries)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:540:51 [INFO] [stderr] | [INFO] [stderr] 540 | let root_dir_sectors = (root_dir_bytes + (bpb.bytes_per_sector as u32 - 1)) / bpb.bytes_per_sector as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bpb.bytes_per_sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:540:87 [INFO] [stderr] | [INFO] [stderr] 540 | let root_dir_sectors = (root_dir_bytes + (bpb.bytes_per_sector as u32 - 1)) / bpb.bytes_per_sector as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bpb.bytes_per_sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:541:33 [INFO] [stderr] | [INFO] [stderr] 541 | let first_data_sector = bpb.reserved_sectors as u32 + (bpb.fats as u32 * sectors_per_fat) + root_dir_sectors; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bpb.reserved_sectors)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:541:64 [INFO] [stderr] | [INFO] [stderr] 541 | let first_data_sector = bpb.reserved_sectors as u32 + (bpb.fats as u32 * sectors_per_fat) + root_dir_sectors; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(bpb.fats)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:542:27 [INFO] [stderr] | [INFO] [stderr] 542 | let fat_sectors = bpb.fats as u32 * sectors_per_fat; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(bpb.fats)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:543:45 [INFO] [stderr] | [INFO] [stderr] 543 | let data_sectors = total_sectors - (bpb.reserved_sectors as u32 + fat_sectors + root_dir_sectors as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bpb.reserved_sectors)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:544:45 [INFO] [stderr] | [INFO] [stderr] 544 | let total_clusters = data_sectors / bpb.sectors_per_cluster as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bpb.sectors_per_cluster)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:549:39 [INFO] [stderr] | [INFO] [stderr] 549 | disk.seek(SeekFrom::Start(bpb.fs_info_sector as u64 * 512))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(bpb.fs_info_sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/fs.rs:647:5 [INFO] [stderr] | [INFO] [stderr] 647 | / pub fn root_dir<'b>(&'b self) -> Dir<'b, T> { [INFO] [stderr] 648 | | let root_rdr = { [INFO] [stderr] 649 | | match self.fat_type { [INFO] [stderr] 650 | | FatType::Fat12 | FatType::Fat16 => DirRawStream::Root(DiskSlice::from_sectors( [INFO] [stderr] ... | [INFO] [stderr] 659 | | Dir::new(root_rdr, self) [INFO] [stderr] 660 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:663:9 [INFO] [stderr] | [INFO] [stderr] 663 | (sector as u64) * self.bpb.bytes_per_sector as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:663:27 [INFO] [stderr] | [INFO] [stderr] 663 | (sector as u64) * self.bpb.bytes_per_sector as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.bpb.bytes_per_sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:667:26 [INFO] [stderr] | [INFO] [stderr] 667 | ((cluster - 2) * self.bpb.sectors_per_cluster as u32) + self.first_data_sector [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.bpb.sectors_per_cluster)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:671:9 [INFO] [stderr] | [INFO] [stderr] 671 | self.bpb.sectors_per_cluster as u32 * self.bpb.bytes_per_sector as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.bpb.sectors_per_cluster)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:671:47 [INFO] [stderr] | [INFO] [stderr] 671 | self.bpb.sectors_per_cluster as u32 * self.bpb.bytes_per_sector as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.bpb.bytes_per_sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/fs.rs:678:5 [INFO] [stderr] | [INFO] [stderr] 678 | / fn fat_slice<'b>(&'b self) -> DiskSlice<'b, T> { [INFO] [stderr] 679 | | let sectors_per_fat = self.bpb.sectors_per_fat(); [INFO] [stderr] 680 | | let mirroring_enabled = self.bpb.mirroring_enabled(); [INFO] [stderr] 681 | | let (fat_first_sector, mirrors) = if mirroring_enabled { [INFO] [stderr] ... | [INFO] [stderr] 688 | | DiskSlice::from_sectors(fat_first_sector, sectors_per_fat, mirrors, self) [INFO] [stderr] 689 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:682:14 [INFO] [stderr] | [INFO] [stderr] 682 | (self.bpb.reserved_sectors as u32, self.bpb.fats) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.bpb.reserved_sectors)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:684:30 [INFO] [stderr] | [INFO] [stderr] 684 | let active_fat = self.bpb.active_fat() as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.bpb.active_fat())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:685:36 [INFO] [stderr] | [INFO] [stderr] 685 | let fat_first_sector = (self.bpb.reserved_sectors as u32) + active_fat * sectors_per_fat; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.bpb.reserved_sectors)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:774:39 [INFO] [stderr] | [INFO] [stderr] 774 | disk.seek(SeekFrom::Start(self.bpb.fs_info_sector as u64 * 512))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.bpb.fs_info_sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:832:32 [INFO] [stderr] | [INFO] [stderr] 832 | let bytes_per_sector = fs.bpb.bytes_per_sector as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(fs.bpb.bytes_per_sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:834:13 [INFO] [stderr] | [INFO] [stderr] 834 | first_sector as u64 * bytes_per_sector, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(first_sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:835:13 [INFO] [stderr] | [INFO] [stderr] 835 | sector_count as u64 * bytes_per_sector, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(sector_count)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:883:48 [INFO] [stderr] | [INFO] [stderr] 883 | disk.seek(SeekFrom::Start(offset + i as u64 * self.size))?; [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(i)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:124:38 [INFO] [stderr] | [INFO] [stderr] 124 | fat.seek(io::SeekFrom::Start(fat_offset as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(fat_offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:126:12 [INFO] [stderr] | [INFO] [stderr] 126 | Ok(match cluster & 1 { [INFO] [stderr] | ____________^ [INFO] [stderr] 127 | | 0 => packed_val & 0x0FFF, [INFO] [stderr] 128 | | _ => packed_val >> 4, [INFO] [stderr] 129 | | } as u32) [INFO] [stderr] | |________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 126 | Ok(u32::from(match cluster & 1 { [INFO] [stderr] 127 | 0 => packed_val & 0x0FFF, [INFO] [stderr] 128 | _ => packed_val >> 4, [INFO] [stderr] 129 | })) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:150:38 [INFO] [stderr] | [INFO] [stderr] 150 | fat.seek(io::SeekFrom::Start(fat_offset as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(fat_offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:152:38 [INFO] [stderr] | [INFO] [stderr] 152 | fat.seek(io::SeekFrom::Start(fat_offset as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(fat_offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:164:38 [INFO] [stderr] | [INFO] [stderr] 164 | fat.seek(io::SeekFrom::Start(fat_offset as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(fat_offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:181:37 [INFO] [stderr] | [INFO] [stderr] 181 | let next_byte = fat.read_u8()? as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(fat.read_u8()?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:191:38 [INFO] [stderr] | [INFO] [stderr] 191 | fat.seek(io::SeekFrom::Start((cluster * 3 / 2) as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(cluster * 3 / 2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:196:44 [INFO] [stderr] | [INFO] [stderr] 196 | _ => fat.read_u8().map(|n| n as u16), [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(n)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:218:38 [INFO] [stderr] | [INFO] [stderr] 218 | fat.seek(io::SeekFrom::Start((cluster * 2) as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(cluster * 2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:219:12 [INFO] [stderr] | [INFO] [stderr] 219 | Ok(fat.read_u16::()? as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(fat.read_u16::()?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:233:38 [INFO] [stderr] | [INFO] [stderr] 233 | fat.seek(io::SeekFrom::Start((cluster * 2) as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(cluster * 2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:246:38 [INFO] [stderr] | [INFO] [stderr] 246 | fat.seek(io::SeekFrom::Start((cluster * 2) as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(cluster * 2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:260:38 [INFO] [stderr] | [INFO] [stderr] 260 | fat.seek(io::SeekFrom::Start((cluster * 2) as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(cluster * 2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:274:38 [INFO] [stderr] | [INFO] [stderr] 274 | fat.seek(io::SeekFrom::Start((cluster * 4) as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(cluster * 4)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:303:38 [INFO] [stderr] | [INFO] [stderr] 303 | fat.seek(io::SeekFrom::Start((cluster * 4) as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(cluster * 4)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:328:38 [INFO] [stderr] | [INFO] [stderr] 328 | fat.seek(io::SeekFrom::Start((cluster * 4) as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(cluster * 4)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:342:38 [INFO] [stderr] | [INFO] [stderr] 342 | fat.seek(io::SeekFrom::Start((cluster * 4) as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(cluster * 4)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/table.rs:412:26 [INFO] [stderr] | [INFO] [stderr] 412 | self.cluster.map(|n| Ok(n)) [INFO] [stderr] | ^^^^^^^^^ help: remove closure as shown: `Ok` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/time.rs:27:26 [INFO] [stderr] | [INFO] [stderr] 27 | pub(crate) fn encode(&self) -> u16 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:51:43 [INFO] [stderr] | [INFO] [stderr] 51 | let sec = (dos_time & 0x1F) * 2 + (dos_time_hi_res as u16) / 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(dos_time_hi_res)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:52:23 [INFO] [stderr] | [INFO] [stderr] 52 | let millis = (dos_time_hi_res as u16 % 100) * 10; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(dos_time_hi_res)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/time.rs:56:26 [INFO] [stderr] | [INFO] [stderr] 56 | pub(crate) fn encode(&self) -> (u16, u8) { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:86:19 [INFO] [stderr] | [INFO] [stderr] 86 | Local.ymd(date.year as i32, date.month as u32, date.day as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `i32::from(date.year)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:86:37 [INFO] [stderr] | [INFO] [stderr] 86 | Local.ymd(date.year as i32, date.month as u32, date.day as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(date.month)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:86:56 [INFO] [stderr] | [INFO] [stderr] 86 | Local.ymd(date.year as i32, date.month as u32, date.day as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(date.day)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:94:13 [INFO] [stderr] | [INFO] [stderr] 94 | date_time.time.hour as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(date_time.time.hour)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | date_time.time.min as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(date_time.time.min)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:96:13 [INFO] [stderr] | [INFO] [stderr] 96 | date_time.time.sec as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(date_time.time.sec)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | date_time.time.millis as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(date_time.time.millis)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `fatfs`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir.rs:28:9 [INFO] [stderr] | [INFO] [stderr] 28 | / match self { [INFO] [stderr] 29 | | &DirRawStream::File(ref file) => file.abs_pos(), [INFO] [stderr] 30 | | &DirRawStream::Root(ref slice) => Some(slice.abs_pos()), [INFO] [stderr] 31 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 28 | match *self { [INFO] [stderr] 29 | DirRawStream::File(ref file) => file.abs_pos(), [INFO] [stderr] 30 | DirRawStream::Root(ref slice) => Some(slice.abs_pos()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir.rs:35:9 [INFO] [stderr] | [INFO] [stderr] 35 | / match self { [INFO] [stderr] 36 | | &DirRawStream::File(ref file) => file.first_cluster(), [INFO] [stderr] 37 | | &DirRawStream::Root(_) => None, [INFO] [stderr] 38 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 35 | match *self { [INFO] [stderr] 36 | DirRawStream::File(ref file) => file.first_cluster(), [INFO] [stderr] 37 | DirRawStream::Root(_) => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | / match self { [INFO] [stderr] 46 | | &DirRawStream::File(ref file) => DirRawStream::File(file.clone()), [INFO] [stderr] 47 | | &DirRawStream::Root(ref raw) => DirRawStream::Root(raw.clone()), [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 45 | match *self { [INFO] [stderr] 46 | DirRawStream::File(ref file) => DirRawStream::File(file.clone()), [INFO] [stderr] 47 | DirRawStream::Root(ref raw) => DirRawStream::Root(raw.clone()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | / match self { [INFO] [stderr] 55 | | &mut DirRawStream::File(ref mut file) => file.read(buf), [INFO] [stderr] 56 | | &mut DirRawStream::Root(ref mut raw) => raw.read(buf), [INFO] [stderr] 57 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 54 | match *self { [INFO] [stderr] 55 | DirRawStream::File(ref mut file) => file.read(buf), [INFO] [stderr] 56 | DirRawStream::Root(ref mut raw) => raw.read(buf), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | / match self { [INFO] [stderr] 64 | | &mut DirRawStream::File(ref mut file) => file.write(buf), [INFO] [stderr] 65 | | &mut DirRawStream::Root(ref mut raw) => raw.write(buf), [INFO] [stderr] 66 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 63 | match *self { [INFO] [stderr] 64 | DirRawStream::File(ref mut file) => file.write(buf), [INFO] [stderr] 65 | DirRawStream::Root(ref mut raw) => raw.write(buf), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | / match self { [INFO] [stderr] 70 | | &mut DirRawStream::File(ref mut file) => file.flush(), [INFO] [stderr] 71 | | &mut DirRawStream::Root(ref mut raw) => raw.flush(), [INFO] [stderr] 72 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 69 | match *self { [INFO] [stderr] 70 | DirRawStream::File(ref mut file) => file.flush(), [INFO] [stderr] 71 | DirRawStream::Root(ref mut raw) => raw.flush(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | / match self { [INFO] [stderr] 79 | | &mut DirRawStream::File(ref mut file) => file.seek(pos), [INFO] [stderr] 80 | | &mut DirRawStream::Root(ref mut raw) => raw.seek(pos), [INFO] [stderr] 81 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 78 | match *self { [INFO] [stderr] 79 | DirRawStream::File(ref mut file) => file.seek(pos), [INFO] [stderr] 80 | DirRawStream::Root(ref mut raw) => raw.seek(pos), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/dir.rs:85:1 [INFO] [stderr] | [INFO] [stderr] 85 | / fn split_path<'c>(path: &'c str) -> (&'c str, Option<&'c str>) { [INFO] [stderr] 86 | | // remove trailing slash and split into 2 components - top-most parent and rest [INFO] [stderr] 87 | | let mut path_split = path.trim_matches('/').splitn(2, "/"); [INFO] [stderr] 88 | | let comp = path_split.next().unwrap(); // SAFE: splitn always returns at least one element [INFO] [stderr] 89 | | let rest_opt = path_split.next(); [INFO] [stderr] 90 | | (comp, rest_opt) [INFO] [stderr] 91 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/dir.rs:87:59 [INFO] [stderr] | [INFO] [stderr] 87 | let mut path_split = path.trim_matches('/').splitn(2, "/"); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:260:24 [INFO] [stderr] | [INFO] [stderr] 260 | if name != ".".as_bytes() && name != "..".as_bytes() { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"."` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:260:50 [INFO] [stderr] | [INFO] [stderr] 260 | if name != ".".as_bytes() && name != "..".as_bytes() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b".."` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: The function/method `rename` doesn't need a mutable reference [INFO] [stderr] --> src/dir.rs:321:42 [INFO] [stderr] | [INFO] [stderr] 321 | return self.rename(src_path, &mut e.to_dir(), rest); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/dir.rs:412:54 [INFO] [stderr] | [INFO] [stderr] 412 | fn alloc_and_write_lfn_entries(&self, lfn_utf16: &LfnUtf16, short_name: &[u8]) -> io::Result<(DirRawStream<'a, T>, u64)> { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir.rs:487:9 [INFO] [stderr] | [INFO] [stderr] 487 | / match raw_entry { [INFO] [stderr] 488 | | &DirEntryData::File(ref sfn_entry) => self.skip_volume && sfn_entry.is_volume(), [INFO] [stderr] 489 | | _ => false, [INFO] [stderr] 490 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 487 | match *raw_entry { [INFO] [stderr] 488 | DirEntryData::File(ref sfn_entry) => self.skip_volume && sfn_entry.is_volume(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/dir.rs:569:8 [INFO] [stderr] | [INFO] [stderr] 569 | if name.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `name.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `short_name`. [INFO] [stderr] --> src/dir.rs:590:14 [INFO] [stderr] | [INFO] [stderr] 590 | for i in 0..11 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 590 | for in short_name.iter().take(11) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/dir.rs:618:15 [INFO] [stderr] | [INFO] [stderr] 618 | fn to_vec(mut self) -> Vec { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/dir.rs:963:27 [INFO] [stderr] | [INFO] [stderr] 963 | buf[prefix_len] = '~' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'~' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dir.rs:970:36 [INFO] [stderr] | [INFO] [stderr] 970 | let c1 = char::from_digit((x as u32 >> 12) & 0xF, 16).unwrap().to_ascii_uppercase() as u8; [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(x)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dir.rs:971:36 [INFO] [stderr] | [INFO] [stderr] 971 | let c2 = char::from_digit((x as u32 >> 8) & 0xF, 16).unwrap().to_ascii_uppercase() as u8; [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dir.rs:972:36 [INFO] [stderr] | [INFO] [stderr] 972 | let c3 = char::from_digit((x as u32 >> 4) & 0xF, 16).unwrap().to_ascii_uppercase() as u8; [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `x as u32` [INFO] [stderr] --> src/dir.rs:973:35 [INFO] [stderr] | [INFO] [stderr] 973 | let c4 = char::from_digit((x as u32 >> 0) & 0xF, 16).unwrap().to_ascii_uppercase() as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dir.rs:973:36 [INFO] [stderr] | [INFO] [stderr] 973 | let c4 = char::from_digit((x as u32 >> 0) & 0xF, 16).unwrap().to_ascii_uppercase() as u8; [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:991:73 [INFO] [stderr] | [INFO] [stderr] 991 | assert_eq!(&ShortNameGenerator::new("Foo").generate().unwrap(), "FOO ".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"FOO "` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:992:75 [INFO] [stderr] | [INFO] [stderr] 992 | assert_eq!(&ShortNameGenerator::new("Foo.b").generate().unwrap(), "FOO B ".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"FOO B "` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:993:77 [INFO] [stderr] | [INFO] [stderr] 993 | assert_eq!(&ShortNameGenerator::new("Foo.baR").generate().unwrap(), "FOO BAR".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"FOO BAR"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:994:79 [INFO] [stderr] | [INFO] [stderr] 994 | assert_eq!(&ShortNameGenerator::new("Foo+1.baR").generate().unwrap(), "FOO_1~1 BAR".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"FOO_1~1 BAR"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:997:13 [INFO] [stderr] | [INFO] [stderr] 997 | "VER_12~1TEX".as_bytes() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"VER_12~1TEX"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:1001:13 [INFO] [stderr] | [INFO] [stderr] 1001 | "BASHRC~1SWP".as_bytes() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"BASHRC~1SWP"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:1022:26 [INFO] [stderr] | [INFO] [stderr] 1022 | assert_eq!(&buf, "TEXTFI~1TXT".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"TEXTFI~1TXT"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:1025:26 [INFO] [stderr] | [INFO] [stderr] 1025 | assert_eq!(&buf, "TEXTFI~2TXT".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"TEXTFI~2TXT"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:1028:26 [INFO] [stderr] | [INFO] [stderr] 1028 | assert_eq!(&buf, "TEXTFI~3TXT".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"TEXTFI~3TXT"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:1031:26 [INFO] [stderr] | [INFO] [stderr] 1031 | assert_eq!(&buf, "TEXTFI~4TXT".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"TEXTFI~4TXT"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:1034:26 [INFO] [stderr] | [INFO] [stderr] 1034 | assert_eq!(&buf, "TE527D~1TXT".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"TE527D~1TXT"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:1037:26 [INFO] [stderr] | [INFO] [stderr] 1037 | assert_eq!(&buf, "TE527D~2TXT".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"TE527D~2TXT"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:1051:26 [INFO] [stderr] | [INFO] [stderr] 1051 | assert_eq!(&buf, "TE527E~1TXT".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"TE527E~1TXT"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:1059:26 [INFO] [stderr] | [INFO] [stderr] 1059 | assert_eq!(&buf, "X TXT".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"X TXT"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:1062:26 [INFO] [stderr] | [INFO] [stderr] 1062 | assert_eq!(&buf, "X~1 TXT".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"X~1 TXT"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:1065:26 [INFO] [stderr] | [INFO] [stderr] 1065 | assert_eq!(&buf, "X~2 TXT".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"X~2 TXT"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:1068:26 [INFO] [stderr] | [INFO] [stderr] 1068 | assert_eq!(&buf, "X~3 TXT".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"X~3 TXT"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:1071:26 [INFO] [stderr] | [INFO] [stderr] 1071 | assert_eq!(&buf, "X~4 TXT".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"X~4 TXT"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:1074:26 [INFO] [stderr] | [INFO] [stderr] 1074 | assert_eq!(&buf, "X40DA~1 TXT".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"X40DA~1 TXT"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir.rs:1077:26 [INFO] [stderr] | [INFO] [stderr] 1077 | assert_eq!(&buf, "X40DA~2 TXT".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"X40DA~2 TXT"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/dir_entry.rs:54:25 [INFO] [stderr] | [INFO] [stderr] 54 | const PADDING: u8 = ' ' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b' ' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/dir_entry.rs:67:30 [INFO] [stderr] | [INFO] [stderr] 67 | name[name_len] = '.' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'.' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dir_entry.rs:162:18 [INFO] [stderr] | [INFO] [stderr] 162 | let n = ((first_cluster_hi as u32) << 16) | self.first_cluster_lo as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(first_cluster_hi)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dir_entry.rs:162:53 [INFO] [stderr] | [INFO] [stderr] 162 | let n = ((first_cluster_hi as u32) << 16) | self.first_cluster_lo as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.first_cluster_lo)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir_entry.rs:352:9 [INFO] [stderr] | [INFO] [stderr] 352 | / match self { [INFO] [stderr] 353 | | &DirEntryData::File(ref file) => file.serialize(wrt), [INFO] [stderr] 354 | | &DirEntryData::Lfn(ref lfn) => lfn.serialize(wrt), [INFO] [stderr] 355 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 352 | match *self { [INFO] [stderr] 353 | DirEntryData::File(ref file) => file.serialize(wrt), [INFO] [stderr] 354 | DirEntryData::Lfn(ref lfn) => lfn.serialize(wrt), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir_entry.rs:407:9 [INFO] [stderr] | [INFO] [stderr] 407 | / match self { [INFO] [stderr] 408 | | &DirEntryData::File(ref file) => file.is_deleted(), [INFO] [stderr] 409 | | &DirEntryData::Lfn(ref lfn) => lfn.is_deleted(), [INFO] [stderr] 410 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 407 | match *self { [INFO] [stderr] 408 | DirEntryData::File(ref file) => file.is_deleted(), [INFO] [stderr] 409 | DirEntryData::Lfn(ref lfn) => lfn.is_deleted(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir_entry.rs:414:9 [INFO] [stderr] | [INFO] [stderr] 414 | / match self { [INFO] [stderr] 415 | | &mut DirEntryData::File(ref mut file) => file.set_deleted(), [INFO] [stderr] 416 | | &mut DirEntryData::Lfn(ref mut lfn) => lfn.set_deleted(), [INFO] [stderr] 417 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 414 | match *self { [INFO] [stderr] 415 | DirEntryData::File(ref mut file) => file.set_deleted(), [INFO] [stderr] 416 | DirEntryData::Lfn(ref mut lfn) => lfn.set_deleted(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/dir_entry.rs:421:9 [INFO] [stderr] | [INFO] [stderr] 421 | / match self { [INFO] [stderr] 422 | | &DirEntryData::File(ref file) => file.is_end(), [INFO] [stderr] 423 | | &DirEntryData::Lfn(ref lfn) => lfn.is_end(), [INFO] [stderr] 424 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 421 | match *self { [INFO] [stderr] 422 | DirEntryData::File(ref file) => file.is_end(), [INFO] [stderr] 423 | DirEntryData::Lfn(ref lfn) => lfn.is_end(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: item `dir_entry::DirEntry<'a, T>` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/dir_entry.rs:513:1 [INFO] [stderr] | [INFO] [stderr] 513 | / impl<'a, T: ReadWriteSeek> DirEntry<'a, T> { [INFO] [stderr] 514 | | /// Returns short file name. [INFO] [stderr] 515 | | /// [INFO] [stderr] 516 | | /// Non-ASCII characters are replaced by the replacement character (U+FFFD). [INFO] [stderr] ... | [INFO] [stderr] 628 | | } [INFO] [stderr] 629 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/dir_entry.rs:532:12 [INFO] [stderr] | [INFO] [stderr] 532 | if self.lfn_utf16.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.lfn_utf16.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/dir_entry.rs:590:9 [INFO] [stderr] | [INFO] [stderr] 590 | self.data.size as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.data.size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir_entry.rs:645:40 [INFO] [stderr] | [INFO] [stderr] 645 | raw_short_name.copy_from_slice("FOO BAR".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"FOO BAR"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir_entry.rs:647:40 [INFO] [stderr] | [INFO] [stderr] 647 | raw_short_name.copy_from_slice("LOOK AT M E".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"LOOK AT M E"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir_entry.rs:664:40 [INFO] [stderr] | [INFO] [stderr] 664 | raw_short_name.copy_from_slice("FOO ".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"FOO "` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir_entry.rs:666:40 [INFO] [stderr] | [INFO] [stderr] 666 | raw_short_name.copy_from_slice("LOOK AT ".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"LOOK AT "` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir_entry.rs:673:40 [INFO] [stderr] | [INFO] [stderr] 673 | raw_short_name.copy_from_slice("LOOK AT M E".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"LOOK AT M E"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/dir_entry.rs:691:62 [INFO] [stderr] | [INFO] [stderr] 691 | [0xE5, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, '.' as u8, 0x05, 0x05, 0x05] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'.' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/dir_entry.rs:698:40 [INFO] [stderr] | [INFO] [stderr] 698 | raw_short_name.copy_from_slice("FOO RS ".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"FOO RS "` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:80:69 [INFO] [stderr] | [INFO] [stderr] 80 | let offset_in_fs = self.fs.offset_from_cluster(n) + (offset_in_cluster as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(offset_in_cluster)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:210:75 [INFO] [stderr] | [INFO] [stderr] 210 | let offset_in_fs = self.fs.offset_from_cluster(current_cluster) + (offset_in_cluster as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(offset_in_cluster)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/file.rs:277:29 [INFO] [stderr] | [INFO] [stderr] 277 | disk.write(&zero)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:291:75 [INFO] [stderr] | [INFO] [stderr] 291 | let offset_in_fs = self.fs.offset_from_cluster(current_cluster) + (offset_in_cluster as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(offset_in_cluster)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:317:37 [INFO] [stderr] | [INFO] [stderr] 317 | SeekFrom::Current(x) => self.offset as i64 + x, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:320:28 [INFO] [stderr] | [INFO] [stderr] 320 | let size = self.size().expect("cannot seek from end if size is unknown") as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.size().expect("cannot seek from end if size is unknown"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:328:26 [INFO] [stderr] | [INFO] [stderr] 328 | if new_pos > s as i64 { [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(s)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:330:27 [INFO] [stderr] | [INFO] [stderr] 330 | new_pos = s as i64; [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(s)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:334:23 [INFO] [stderr] | [INFO] [stderr] 334 | if new_pos == self.offset as i64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:336:23 [INFO] [stderr] | [INFO] [stderr] 336 | return Ok(self.offset as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:340:41 [INFO] [stderr] | [INFO] [stderr] 340 | let cluster_count = ((new_pos + cluster_size as i64 - 1) / cluster_size as i64 - 1) as isize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(cluster_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:340:68 [INFO] [stderr] | [INFO] [stderr] 340 | let cluster_count = ((new_pos + cluster_size as i64 - 1) / cluster_size as i64 - 1) as isize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(cluster_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:341:35 [INFO] [stderr] | [INFO] [stderr] 341 | let old_cluster_count = ((self.offset as i64 + cluster_size as i64 - 1) / cluster_size as i64 - 1) as isize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:341:56 [INFO] [stderr] | [INFO] [stderr] 341 | let old_cluster_count = ((self.offset as i64 + cluster_size as i64 - 1) / cluster_size as i64 - 1) as isize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(cluster_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:341:83 [INFO] [stderr] | [INFO] [stderr] 341 | let old_cluster_count = ((self.offset as i64 + cluster_size as i64 - 1) / cluster_size as i64 - 1) as isize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(cluster_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:356:60 [INFO] [stderr] | [INFO] [stderr] 356 | new_pos = (i + 1) as i64 * cluster_size as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(cluster_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/file.rs:372:12 [INFO] [stderr] | [INFO] [stderr] 372 | Ok(self.offset as u64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/fs.rs:61:18 [INFO] [stderr] | [INFO] [stderr] 61 | pub fn dirty(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/fs.rs:66:21 [INFO] [stderr] | [INFO] [stderr] 66 | pub fn io_error(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/fs.rs:70:15 [INFO] [stderr] | [INFO] [stderr] 70 | fn encode(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:207:33 [INFO] [stderr] | [INFO] [stderr] 207 | let bytes_per_cluster = self.bytes_per_sector as u32 * self.sectors_per_cluster as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.bytes_per_sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:207:64 [INFO] [stderr] | [INFO] [stderr] 207 | let bytes_per_cluster = self.bytes_per_sector as u32 * self.sectors_per_cluster as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.sectors_per_cluster)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:273:13 [INFO] [stderr] | [INFO] [stderr] 273 | self.sectors_per_fat_16 as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.sectors_per_fat_16)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:281:13 [INFO] [stderr] | [INFO] [stderr] 281 | self.total_sectors_16 as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.total_sectors_16)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/fs.rs:388:9 [INFO] [stderr] | [INFO] [stderr] 388 | wrt.write(&reserved)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/fs.rs:393:9 [INFO] [stderr] | [INFO] [stderr] 393 | wrt.write(&reserved2)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `fs::FsOptions` [INFO] [stderr] --> src/fs.rs:450:5 [INFO] [stderr] | [INFO] [stderr] 450 | / pub fn new() -> Self { [INFO] [stderr] 451 | | FsOptions { [INFO] [stderr] 452 | | update_accessed_date: false, [INFO] [stderr] 453 | | oem_cp_converter: &LOSSY_OEM_CP_CONVERTER, [INFO] [stderr] 454 | | time_provider: &DEFAULT_TIME_PROVIDER, [INFO] [stderr] 455 | | } [INFO] [stderr] 456 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 448 | impl Default for fs::FsOptions { [INFO] [stderr] 449 | fn default() -> Self { [INFO] [stderr] 450 | Self::new() [INFO] [stderr] 451 | } [INFO] [stderr] 452 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:539:30 [INFO] [stderr] | [INFO] [stderr] 539 | let root_dir_bytes = bpb.root_entries as u32 * DIR_ENTRY_SIZE as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bpb.root_entries)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:540:51 [INFO] [stderr] | [INFO] [stderr] 540 | let root_dir_sectors = (root_dir_bytes + (bpb.bytes_per_sector as u32 - 1)) / bpb.bytes_per_sector as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bpb.bytes_per_sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:540:87 [INFO] [stderr] | [INFO] [stderr] 540 | let root_dir_sectors = (root_dir_bytes + (bpb.bytes_per_sector as u32 - 1)) / bpb.bytes_per_sector as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bpb.bytes_per_sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:541:33 [INFO] [stderr] | [INFO] [stderr] 541 | let first_data_sector = bpb.reserved_sectors as u32 + (bpb.fats as u32 * sectors_per_fat) + root_dir_sectors; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bpb.reserved_sectors)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:541:64 [INFO] [stderr] | [INFO] [stderr] 541 | let first_data_sector = bpb.reserved_sectors as u32 + (bpb.fats as u32 * sectors_per_fat) + root_dir_sectors; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(bpb.fats)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:542:27 [INFO] [stderr] | [INFO] [stderr] 542 | let fat_sectors = bpb.fats as u32 * sectors_per_fat; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(bpb.fats)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:543:45 [INFO] [stderr] | [INFO] [stderr] 543 | let data_sectors = total_sectors - (bpb.reserved_sectors as u32 + fat_sectors + root_dir_sectors as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bpb.reserved_sectors)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:544:45 [INFO] [stderr] | [INFO] [stderr] 544 | let total_clusters = data_sectors / bpb.sectors_per_cluster as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bpb.sectors_per_cluster)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:549:39 [INFO] [stderr] | [INFO] [stderr] 549 | disk.seek(SeekFrom::Start(bpb.fs_info_sector as u64 * 512))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(bpb.fs_info_sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/fs.rs:647:5 [INFO] [stderr] | [INFO] [stderr] 647 | / pub fn root_dir<'b>(&'b self) -> Dir<'b, T> { [INFO] [stderr] 648 | | let root_rdr = { [INFO] [stderr] 649 | | match self.fat_type { [INFO] [stderr] 650 | | FatType::Fat12 | FatType::Fat16 => DirRawStream::Root(DiskSlice::from_sectors( [INFO] [stderr] ... | [INFO] [stderr] 659 | | Dir::new(root_rdr, self) [INFO] [stderr] 660 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:663:9 [INFO] [stderr] | [INFO] [stderr] 663 | (sector as u64) * self.bpb.bytes_per_sector as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u64::from(sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:663:27 [INFO] [stderr] | [INFO] [stderr] 663 | (sector as u64) * self.bpb.bytes_per_sector as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.bpb.bytes_per_sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:667:26 [INFO] [stderr] | [INFO] [stderr] 667 | ((cluster - 2) * self.bpb.sectors_per_cluster as u32) + self.first_data_sector [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.bpb.sectors_per_cluster)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:671:9 [INFO] [stderr] | [INFO] [stderr] 671 | self.bpb.sectors_per_cluster as u32 * self.bpb.bytes_per_sector as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.bpb.sectors_per_cluster)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:671:47 [INFO] [stderr] | [INFO] [stderr] 671 | self.bpb.sectors_per_cluster as u32 * self.bpb.bytes_per_sector as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.bpb.bytes_per_sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/fs.rs:678:5 [INFO] [stderr] | [INFO] [stderr] 678 | / fn fat_slice<'b>(&'b self) -> DiskSlice<'b, T> { [INFO] [stderr] 679 | | let sectors_per_fat = self.bpb.sectors_per_fat(); [INFO] [stderr] 680 | | let mirroring_enabled = self.bpb.mirroring_enabled(); [INFO] [stderr] 681 | | let (fat_first_sector, mirrors) = if mirroring_enabled { [INFO] [stderr] ... | [INFO] [stderr] 688 | | DiskSlice::from_sectors(fat_first_sector, sectors_per_fat, mirrors, self) [INFO] [stderr] 689 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:682:14 [INFO] [stderr] | [INFO] [stderr] 682 | (self.bpb.reserved_sectors as u32, self.bpb.fats) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.bpb.reserved_sectors)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:684:30 [INFO] [stderr] | [INFO] [stderr] 684 | let active_fat = self.bpb.active_fat() as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.bpb.active_fat())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:685:36 [INFO] [stderr] | [INFO] [stderr] 685 | let fat_first_sector = (self.bpb.reserved_sectors as u32) + active_fat * sectors_per_fat; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.bpb.reserved_sectors)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:774:39 [INFO] [stderr] | [INFO] [stderr] 774 | disk.seek(SeekFrom::Start(self.bpb.fs_info_sector as u64 * 512))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.bpb.fs_info_sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:832:32 [INFO] [stderr] | [INFO] [stderr] 832 | let bytes_per_sector = fs.bpb.bytes_per_sector as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(fs.bpb.bytes_per_sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:834:13 [INFO] [stderr] | [INFO] [stderr] 834 | first_sector as u64 * bytes_per_sector, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(first_sector)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:835:13 [INFO] [stderr] | [INFO] [stderr] 835 | sector_count as u64 * bytes_per_sector, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(sector_count)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/fs.rs:883:48 [INFO] [stderr] | [INFO] [stderr] 883 | disk.seek(SeekFrom::Start(offset + i as u64 * self.size))?; [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(i)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:124:38 [INFO] [stderr] | [INFO] [stderr] 124 | fat.seek(io::SeekFrom::Start(fat_offset as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(fat_offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:126:12 [INFO] [stderr] | [INFO] [stderr] 126 | Ok(match cluster & 1 { [INFO] [stderr] | ____________^ [INFO] [stderr] 127 | | 0 => packed_val & 0x0FFF, [INFO] [stderr] 128 | | _ => packed_val >> 4, [INFO] [stderr] 129 | | } as u32) [INFO] [stderr] | |________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 126 | Ok(u32::from(match cluster & 1 { [INFO] [stderr] 127 | 0 => packed_val & 0x0FFF, [INFO] [stderr] 128 | _ => packed_val >> 4, [INFO] [stderr] 129 | })) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:150:38 [INFO] [stderr] | [INFO] [stderr] 150 | fat.seek(io::SeekFrom::Start(fat_offset as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(fat_offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:152:38 [INFO] [stderr] | [INFO] [stderr] 152 | fat.seek(io::SeekFrom::Start(fat_offset as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(fat_offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:164:38 [INFO] [stderr] | [INFO] [stderr] 164 | fat.seek(io::SeekFrom::Start(fat_offset as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(fat_offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:181:37 [INFO] [stderr] | [INFO] [stderr] 181 | let next_byte = fat.read_u8()? as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(fat.read_u8()?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:191:38 [INFO] [stderr] | [INFO] [stderr] 191 | fat.seek(io::SeekFrom::Start((cluster * 3 / 2) as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(cluster * 3 / 2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:196:44 [INFO] [stderr] | [INFO] [stderr] 196 | _ => fat.read_u8().map(|n| n as u16), [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(n)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:218:38 [INFO] [stderr] | [INFO] [stderr] 218 | fat.seek(io::SeekFrom::Start((cluster * 2) as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(cluster * 2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:219:12 [INFO] [stderr] | [INFO] [stderr] 219 | Ok(fat.read_u16::()? as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(fat.read_u16::()?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:233:38 [INFO] [stderr] | [INFO] [stderr] 233 | fat.seek(io::SeekFrom::Start((cluster * 2) as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(cluster * 2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:246:38 [INFO] [stderr] | [INFO] [stderr] 246 | fat.seek(io::SeekFrom::Start((cluster * 2) as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(cluster * 2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:260:38 [INFO] [stderr] | [INFO] [stderr] 260 | fat.seek(io::SeekFrom::Start((cluster * 2) as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(cluster * 2)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:274:38 [INFO] [stderr] | [INFO] [stderr] 274 | fat.seek(io::SeekFrom::Start((cluster * 4) as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(cluster * 4)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:303:38 [INFO] [stderr] | [INFO] [stderr] 303 | fat.seek(io::SeekFrom::Start((cluster * 4) as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(cluster * 4)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:328:38 [INFO] [stderr] | [INFO] [stderr] 328 | fat.seek(io::SeekFrom::Start((cluster * 4) as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(cluster * 4)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/table.rs:342:38 [INFO] [stderr] | [INFO] [stderr] 342 | fat.seek(io::SeekFrom::Start((cluster * 4) as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(cluster * 4)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/table.rs:412:26 [INFO] [stderr] | [INFO] [stderr] 412 | self.cluster.map(|n| Ok(n)) [INFO] [stderr] | ^^^^^^^^^ help: remove closure as shown: `Ok` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 32 [INFO] [stderr] --> src/table.rs:420:5 [INFO] [stderr] | [INFO] [stderr] 420 | / fn test_fat(fat_type: FatType, mut cur: T) { [INFO] [stderr] 421 | | // based on cluster maps from Wikipedia: [INFO] [stderr] 422 | | // https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system#Cluster_map [INFO] [stderr] 423 | | assert_eq!(read_fat(&mut cur, fat_type, 1).unwrap(), FatValue::EndOfChain); [INFO] [stderr] ... | [INFO] [stderr] 474 | | assert_eq!(read_fat(&mut cur, fat_type, 0x16).unwrap(), FatValue::Free); [INFO] [stderr] 475 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/time.rs:27:26 [INFO] [stderr] | [INFO] [stderr] 27 | pub(crate) fn encode(&self) -> u16 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:51:43 [INFO] [stderr] | [INFO] [stderr] 51 | let sec = (dos_time & 0x1F) * 2 + (dos_time_hi_res as u16) / 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(dos_time_hi_res)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:52:23 [INFO] [stderr] | [INFO] [stderr] 52 | let millis = (dos_time_hi_res as u16 % 100) * 10; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(dos_time_hi_res)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/time.rs:56:26 [INFO] [stderr] | [INFO] [stderr] 56 | pub(crate) fn encode(&self) -> (u16, u8) { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:86:19 [INFO] [stderr] | [INFO] [stderr] 86 | Local.ymd(date.year as i32, date.month as u32, date.day as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `i32::from(date.year)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:86:37 [INFO] [stderr] | [INFO] [stderr] 86 | Local.ymd(date.year as i32, date.month as u32, date.day as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(date.month)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:86:56 [INFO] [stderr] | [INFO] [stderr] 86 | Local.ymd(date.year as i32, date.month as u32, date.day as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(date.day)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:94:13 [INFO] [stderr] | [INFO] [stderr] 94 | date_time.time.hour as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(date_time.time.hour)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | date_time.time.min as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(date_time.time.min)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:96:13 [INFO] [stderr] | [INFO] [stderr] 96 | date_time.time.sec as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(date_time.time.sec)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | date_time.time.millis as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(date_time.time.millis)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `fatfs`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "4019b3dec23745c8922f0e68082e72b3154563e2b5d82debfd1d4b55a3e9b72a"` [INFO] running `"docker" "rm" "-f" "4019b3dec23745c8922f0e68082e72b3154563e2b5d82debfd1d4b55a3e9b72a"` [INFO] [stdout] 4019b3dec23745c8922f0e68082e72b3154563e2b5d82debfd1d4b55a3e9b72a