[INFO] fetching crate gpwgpu_core 0.2.0... [INFO] linting gpwgpu_core-0.2.0 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate gpwgpu_core 0.2.0 into /workspace/builds/worker-6-tc1/source [INFO] started tweaking crates.io crate gpwgpu_core 0.2.0 [INFO] finished tweaking crates.io crate gpwgpu_core 0.2.0 [INFO] tweaked toml for crates.io crate gpwgpu_core 0.2.0 written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate gpwgpu_core 0.2.0 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Locking 136 packages to latest compatible versions [INFO] [stderr] Adding bincode v1.3.3 (available: v3.0.0) [INFO] [stderr] Adding nom v7.1.3 (available: v8.0.0) [INFO] [stderr] Adding pollster v0.3.0 (available: v0.4.0) [INFO] [stderr] Adding thiserror v1.0.69 (available: v2.0.18) [INFO] [stderr] Adding wgpu v23.0.1 (available: v28.0.0) [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded joinery v2.1.0 [INFO] [stderr] Downloaded brownstone v3.0.0 [INFO] [stderr] Downloaded nom-supreme v0.8.0 [INFO] [stderr] Downloaded slow_primes v0.1.14 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 0e5b314710b955725e35610932800410307f1d0d21a9d16cc9caf1a4e651dc34 [INFO] running `Command { std: "docker" "start" "-a" "0e5b314710b955725e35610932800410307f1d0d21a9d16cc9caf1a4e651dc34", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "0e5b314710b955725e35610932800410307f1d0d21a9d16cc9caf1a4e651dc34", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0e5b314710b955725e35610932800410307f1d0d21a9d16cc9caf1a4e651dc34", kill_on_drop: false }` [INFO] [stdout] 0e5b314710b955725e35610932800410307f1d0d21a9d16cc9caf1a4e651dc34 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] aa1fbb0dfe00fbf23d47802ecf4170b2fb7bd910b910b8cc4ddbddc1075af2c3 [INFO] running `Command { std: "docker" "start" "-a" "aa1fbb0dfe00fbf23d47802ecf4170b2fb7bd910b910b8cc4ddbddc1075af2c3", kill_on_drop: false }` [INFO] [stderr] Compiling quote v1.0.45 [INFO] [stderr] Compiling naga v23.1.0 [INFO] [stderr] Checking termcolor v1.4.1 [INFO] [stderr] Checking smallvec v1.15.1 [INFO] [stderr] Checking gpu-descriptor-types v0.2.0 [INFO] [stderr] Checking spirv v0.3.0+sdk-1.3.268.0 [INFO] [stderr] Checking gpu-alloc-types v0.3.0 [INFO] [stderr] Compiling wgpu-hal v23.0.1 [INFO] [stderr] Checking unicode-xid v0.2.6 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Checking gpu-alloc v0.6.0 [INFO] [stderr] Checking codespan-reporting v0.11.1 [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Checking gpu-descriptor v0.3.2 [INFO] [stderr] Checking khronos-egl v6.0.0 [INFO] [stderr] Checking ash v0.38.0+1.3.281 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Checking num-bigint v0.4.6 [INFO] [stderr] Checking wgpu-types v23.0.0 [INFO] [stderr] Compiling wgpu-core v23.0.1 [INFO] [stderr] Checking glow v0.14.2 [INFO] [stderr] Checking num-iter v0.1.45 [INFO] [stderr] Checking num-complex v0.4.6 [INFO] [stderr] Compiling wgpu v23.0.1 [INFO] [stderr] Checking brownstone v3.0.0 [INFO] [stderr] Checking indent_write v2.2.0 [INFO] [stderr] Checking joinery v2.1.0 [INFO] [stderr] Checking pollster v0.3.0 [INFO] [stderr] Checking nom-supreme v0.8.0 [INFO] [stderr] Checking num-rational v0.4.2 [INFO] [stderr] Checking num v0.4.3 [INFO] [stderr] Checking slow_primes v0.1.14 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling bytemuck_derive v1.10.2 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Checking bytemuck v1.25.0 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking bincode v1.3.3 [INFO] [stderr] Checking gpwgpu_core v0.2.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: useless conversion to the same type: `std::borrow::Cow<'_, str>` [INFO] [stdout] --> src/parser.rs:89:48 [INFO] [stdout] | [INFO] [stdout] 89 | self.simplify(|ident| Some(Expr::Ident(ident.into()))) [INFO] [stdout] | ^^^^^^^^^^^^ help: consider removing `.into()`: `ident` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:263:9 [INFO] [stdout] | [INFO] [stdout] 263 | return Ok(out); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 263 - return Ok(out); [INFO] [stdout] 263 + Ok(out) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> src/parser.rs:149:36 [INFO] [stdout] | [INFO] [stdout] 149 | (e, Num(n)) if n == 1.0 => e, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] = note: `#[warn(clippy::redundant_guards)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 149 - (e, Num(n)) if n == 1.0 => e, [INFO] [stdout] 149 + (e, Num(1.0)) => e, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> src/parser.rs:170:36 [INFO] [stdout] | [INFO] [stdout] 170 | (Num(n), e) if n == 0.0 => Neg(Box::new(e)), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 170 - (Num(n), e) if n == 0.0 => Neg(Box::new(e)), [INFO] [stdout] 170 + (Num(0.0), e) => Neg(Box::new(e)), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> src/parser.rs:171:36 [INFO] [stdout] | [INFO] [stdout] 171 | (e, Num(n)) if n == 0.0 => e, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 171 - (e, Num(n)) if n == 0.0 => e, [INFO] [stdout] 171 + (e, Num(0.0)) => e, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> src/parser.rs:467:22 [INFO] [stdout] | [INFO] [stdout] 467 | c if c == '\\' => { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 467 - c if c == '\\' => { [INFO] [stdout] 467 + '\\' => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/parser.rs:714:5 [INFO] [stdout] | [INFO] [stdout] 714 | while let Some(ch) = chars.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for ch in chars` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:1064:14 [INFO] [stdout] | [INFO] [stdout] 1064 | _ => return Err(ExpansionError::NonBoolCondition(condition.into_owned())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 1064 - _ => return Err(ExpansionError::NonBoolCondition(condition.into_owned())), [INFO] [stdout] 1064 + _ => Err(ExpansionError::NonBoolCondition(condition.into_owned())), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/parser.rs:1284:9 [INFO] [stdout] | [INFO] [stdout] 1284 | / match token { [INFO] [stdout] 1285 | | Token::Export(Export { name, tokens }) => { [INFO] [stdout] 1286 | | match exports.entry(name.clone()){ [INFO] [stdout] 1287 | | Entry::Occupied(_) => return Err(ExportedMoreThanOnce(name.to_string())), [INFO] [stdout] ... | [INFO] [stdout] 1291 | | _ => {} [INFO] [stdout] 1292 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1284 ~ if let Token::Export(Export { name, tokens }) = token { [INFO] [stdout] 1285 + match exports.entry(name.clone()){ [INFO] [stdout] 1286 + Entry::Occupied(_) => return Err(ExportedMoreThanOnce(name.to_string())), [INFO] [stdout] 1287 + Entry::Vacant(vacant) => vacant.insert(tokens.clone()), [INFO] [stdout] 1288 + }; [INFO] [stdout] 1289 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `utils::WorkgroupSize` [INFO] [stdout] --> src/shaderpreprocessor.rs:70:29 [INFO] [stdout] | [INFO] [stdout] 70 | workgroup_size: workgroup_size.into(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `workgroup_size` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/shaderpreprocessor.rs:194:9 [INFO] [stdout] | [INFO] [stdout] 194 | write!(&mut s, "{: >width$} {line}\n", i + 1, width = pad).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] = note: `#[warn(clippy::write_with_newline)]` on by default [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 194 - write!(&mut s, "{: >width$} {line}\n", i + 1, width = pad).unwrap(); [INFO] [stdout] 194 + writeln!(&mut s, "{: >width$} {line}", i + 1, width = pad).unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `let...else` may be rewritten with the `?` operator [INFO] [stdout] --> src/shaderpreprocessor.rs:305:5 [INFO] [stdout] | [INFO] [stdout] 305 | / let Some(ext) = path [INFO] [stdout] 306 | | .extension() [INFO] [stdout] 307 | | .and_then(|ext| ext.to_str()) [INFO] [stdout] 308 | | .map(|ext| ext.to_lowercase()) [INFO] [stdout] 309 | | else { [INFO] [stdout] 310 | | return None; [INFO] [stdout] 311 | | }; [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] help: replace it with [INFO] [stdout] | [INFO] [stdout] 305 ~ let ext = path [INFO] [stdout] 306 + .extension() [INFO] [stdout] 307 + .and_then(|ext| ext.to_str()) [INFO] [stdout] 308 + .map(|ext| ext.to_lowercase())?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `unwrap()` on `Err` value [INFO] [stdout] --> src/shaderpreprocessor.rs:358:33 [INFO] [stdout] | [INFO] [stdout] 358 | Err(err) => Err(ParseShaderError { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 359 | | name: name.clone(), [INFO] [stdout] 360 | | variant: ParseShaderErrorVariant::MultipleExports(err), [INFO] [stdout] 361 | | }) [INFO] [stdout] 362 | | .unwrap(), [INFO] [stdout] | |_____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_literal_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_literal_unwrap)]` on by default [INFO] [stdout] help: remove the `Err` and `unwrap()` [INFO] [stdout] | [INFO] [stdout] 358 ~ Err(err) => panic!("{:?}", ParseShaderError { [INFO] [stdout] 359 | name: name.clone(), [INFO] [stdout] 360 | variant: ParseShaderErrorVariant::MultipleExports(err), [INFO] [stdout] 361 ~ }), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/shaderpreprocessor.rs:377:43 [INFO] [stdout] | [INFO] [stdout] 377 | let parsed = parse_shader(&source).map_err(|err| ParseShaderError { [INFO] [stdout] | ^^^^^^^ help: change this to: `source` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/shaderpreprocessor.rs:416:28 [INFO] [stdout] | [INFO] [stdout] 416 | pub fn process_by_name<'wg, 'def>( [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> src/shaderpreprocessor.rs:664:5 [INFO] [stdout] | [INFO] [stdout] 664 | / map.into_iter() [INFO] [stdout] 665 | | .map(|(_group_idx, entries)| { [INFO] [stdout] 666 | | let desc = BindGroupLayoutDescriptor { [INFO] [stdout] 667 | | label, [INFO] [stdout] ... | [INFO] [stdout] 671 | | layout [INFO] [stdout] 672 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] = note: `#[warn(clippy::iter_kv_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 664 ~ map.into_values().map(|entries| { [INFO] [stdout] 665 + let desc = BindGroupLayoutDescriptor { [INFO] [stdout] 666 + label, [INFO] [stdout] 667 + entries: &entries, [INFO] [stdout] 668 + }; [INFO] [stdout] 669 + let layout = device.create_bind_group_layout(&desc); [INFO] [stdout] 670 + layout [INFO] [stdout] 671 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/shaderpreprocessor.rs:671:13 [INFO] [stdout] | [INFO] [stdout] 670 | let layout = device.create_bind_group_layout(&desc); [INFO] [stdout] | ---------------------------------------------------- unnecessary `let` binding [INFO] [stdout] 671 | layout [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 670 ~ [INFO] [stdout] 671 ~ device.create_bind_group_layout(&desc) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/utils.rs:28:28 [INFO] [stdout] | [INFO] [stdout] 28 | let exact_workgroups = (len as usize + wg_size as usize - 1) / wg_size as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `(len as usize).div_ceil(wg_size as usize)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] = note: `#[warn(clippy::manual_div_ceil)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/utils.rs:284:6 [INFO] [stdout] | [INFO] [stdout] 284 | impl<'a> BindingGroup for [(u32, &'a wgpu::Buffer)] { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 284 - impl<'a> BindingGroup for [(u32, &'a wgpu::Buffer)] { [INFO] [stdout] 284 + impl BindingGroup for [(u32, &wgpu::Buffer)] { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/utils.rs:307:6 [INFO] [stdout] | [INFO] [stdout] 307 | impl<'a, const N: usize> BindingGroup for [(u32, &'a wgpu::Buffer); N] { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 307 - impl<'a, const N: usize> BindingGroup for [(u32, &'a wgpu::Buffer); N] { [INFO] [stdout] 307 + impl BindingGroup for [(u32, &wgpu::Buffer); N] { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/utils.rs:330:6 [INFO] [stdout] | [INFO] [stdout] 330 | impl<'a> BindingGroup for HashMap { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 330 - impl<'a> BindingGroup for HashMap { [INFO] [stdout] 330 + impl BindingGroup for HashMap { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/utils.rs:383:6 [INFO] [stdout] | [INFO] [stdout] 383 | impl<'a> BindingGroup for Vec<(u32, &'a wgpu::Buffer)> { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 383 - impl<'a> BindingGroup for Vec<(u32, &'a wgpu::Buffer)> { [INFO] [stdout] 383 + impl BindingGroup for Vec<(u32, &wgpu::Buffer)> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the impl [INFO] [stdout] --> src/utils.rs:405:6 [INFO] [stdout] | [INFO] [stdout] 405 | impl<'a, T: BindingGroup> BindingGroup for &T { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unsafe function's docs are missing a `# Safety` section [INFO] [stdout] --> src/utils.rs:444:1 [INFO] [stdout] | [INFO] [stdout] 444 | pub unsafe fn any_as_u8_slice(p: &T) -> &[u8] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_safety_doc [INFO] [stdout] = note: `#[warn(clippy::missing_safety_doc)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/utils.rs:504:31 [INFO] [stdout] | [INFO] [stdout] 504 | n_workgroups[i] = (dims[i] + wgsize[i] - 1) / wgsize[i]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `dims[i].div_ceil(wgsize[i])` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/utils.rs:671:47 [INFO] [stdout] | [INFO] [stdout] 671 | std::fs::write(&save_name, &data).expect(save_name.as_os_str().to_str().unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("{}", save_name.as_os_str().to_str().unwrap()))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/utils.rs:677:28 [INFO] [stdout] | [INFO] [stdout] 677 | std::fs::write(&save_path.join("load.py"), &contents).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `save_path.join("load.py")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/utils.rs:735:16 [INFO] [stdout] | [INFO] [stdout] 735 | pub fn new<'a>( [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/utils.rs:761:12 [INFO] [stdout] | [INFO] [stdout] 761 | if push_constants.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!push_constants.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/utils.rs:787:9 [INFO] [stdout] | [INFO] [stdout] 787 | / match self.pipeline.dispatcher { [INFO] [stdout] 788 | | Some(ref dispatcher) => { [INFO] [stdout] 789 | | dispatcher.reset_indirect(encoder); [INFO] [stdout] ... | [INFO] [stdout] 792 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 787 ~ if let Some(ref dispatcher) = self.pipeline.dispatcher { [INFO] [stdout] 788 + dispatcher.reset_indirect(encoder); [INFO] [stdout] 789 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/utils.rs:873:20 [INFO] [stdout] | [INFO] [stdout] 873 | if !(storage == "storage") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(storage != "storage")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/utils.rs:871:64 [INFO] [stdout] | [INFO] [stdout] 871 | let (storage, read_write) = ty.split_once(",").expect(&ty_err()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| panic!("{}", ty_err()))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `::Buffer` which implements the `Copy` trait [INFO] [stdout] --> src/automatic_buffers.rs:46:19 [INFO] [stdout] | [INFO] [stdout] 46 | name: self.name.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `BufferUsages` which implements the `Copy` trait [INFO] [stdout] --> src/automatic_buffers.rs:48:20 [INFO] [stdout] | [INFO] [stdout] 48 | usage: self.usage.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.usage` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/automatic_buffers.rs:49:19 [INFO] [stdout] | [INFO] [stdout] 49 | size: self.size.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.size` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `()` [INFO] [stdout] --> src/automatic_buffers.rs:86:24 [INFO] [stdout] | [INFO] [stdout] 86 | return (); [INFO] [stdout] | ^^ help: remove the `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `()` [INFO] [stdout] --> src/automatic_buffers.rs:98:16 [INFO] [stdout] | [INFO] [stdout] 98 | return (); [INFO] [stdout] | ^^ help: remove the `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/automatic_buffers.rs:188:17 [INFO] [stdout] | [INFO] [stdout] 188 | / match &mut buf.currently_backing { [INFO] [stdout] 189 | | Some((abs_buf, just_set)) => { [INFO] [stdout] 190 | | if *just_set { [INFO] [stdout] 191 | | if buf.size < abs_buf.size { [INFO] [stdout] ... | [INFO] [stdout] 212 | | None => (), [INFO] [stdout] 213 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 188 ~ if let Some((abs_buf, just_set)) = &mut buf.currently_backing { [INFO] [stdout] 189 + if *just_set { [INFO] [stdout] 190 + if buf.size < abs_buf.size { [INFO] [stdout] 191 + buf.size = abs_buf.size [INFO] [stdout] 192 + } [INFO] [stdout] 193 + buf.usage = buf.usage.union(abs_buf.usage); [INFO] [stdout] 194 + these_assignments.insert(abs_buf.name, (buf_idx, abs_buf.clone())); [INFO] [stdout] 195 + *just_set = false; [INFO] [stdout] 196 + } [INFO] [stdout] 197 + [INFO] [stdout] 198 + match abs_buf.memory_req { [INFO] [stdout] 199 + MemoryReq::UnInitOk | MemoryReq::Strict => { [INFO] [stdout] 200 + if last_usage[&abs_buf.name] == operation_idx { [INFO] [stdout] 201 + buf.currently_backing = None; [INFO] [stdout] 202 + [INFO] [stdout] 203 + // Purely a sanity check [INFO] [stdout] 204 + } else if last_usage[&abs_buf.name] < operation_idx { [INFO] [stdout] 205 + unreachable!() [INFO] [stdout] 206 + } [INFO] [stdout] 207 + } [INFO] [stdout] 208 + MemoryReq::Temporary => buf.currently_backing = None, [INFO] [stdout] 209 + } [INFO] [stdout] 210 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `::Buffer` which implements the `Copy` trait [INFO] [stdout] --> src/automatic_buffers.rs:329:42 [INFO] [stdout] | [INFO] [stdout] 329 | .map(|(name, (idx, _))| (name.clone(), &self.buffers[*idx])) [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/automatic_buffers.rs:437:14 [INFO] [stdout] | [INFO] [stdout] 437 | buffers: fn(&PT::Params) -> (TypeId, &'static str, Vec>), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/automatic_buffers.rs:438:13 [INFO] [stdout] | [INFO] [stdout] 438 | set_up: fn( [INFO] [stdout] | _____________^ [INFO] [stdout] 439 | | &wgpu::Device, [INFO] [stdout] 440 | | &PT::Params, [INFO] [stdout] 441 | | &BufferSolution, [INFO] [stdout] 442 | | ) -> Result>, PT::Error>, [INFO] [stdout] | |_________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:267:22 [INFO] [stdout] | [INFO] [stdout] 267 | fn parse_bool(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 267 | fn parse_bool(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:279:21 [INFO] [stdout] | [INFO] [stdout] 279 | fn parse_num(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 279 | fn parse_num(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:283:23 [INFO] [stdout] | [INFO] [stdout] 283 | fn parse_ident(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 283 | fn parse_ident(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:296:24 [INFO] [stdout] | [INFO] [stdout] 296 | fn parse_parens(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 296 | fn parse_parens(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:307:21 [INFO] [stdout] | [INFO] [stdout] 307 | fn parse_neg(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 307 | fn parse_neg(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:314:21 [INFO] [stdout] | [INFO] [stdout] 314 | fn parse_not(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 314 | fn parse_not(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:321:24 [INFO] [stdout] | [INFO] [stdout] 321 | fn parse_factor(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 321 | fn parse_factor(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:332:25 [INFO] [stdout] | [INFO] [stdout] 332 | fn parse_mul_div(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 332 | fn parse_mul_div(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:350:25 [INFO] [stdout] | [INFO] [stdout] 350 | fn parse_add_sub(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 350 | fn parse_add_sub(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:368:28 [INFO] [stdout] | [INFO] [stdout] 368 | fn parse_comparison(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 368 | fn parse_comparison(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:411:21 [INFO] [stdout] | [INFO] [stdout] 411 | fn parse_and(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 411 | fn parse_and(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:425:20 [INFO] [stdout] | [INFO] [stdout] 425 | fn parse_or(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 425 | fn parse_or(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:439:26 [INFO] [stdout] | [INFO] [stdout] 439 | pub fn parse_expr(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 439 | pub fn parse_expr(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:443:32 [INFO] [stdout] | [INFO] [stdout] 443 | pub fn parse_token_expr(input: &str) -> IResult<&str, Token, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 443 | pub fn parse_token_expr(input: &str) -> IResult<&str, Token<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:670:29 [INFO] [stdout] | [INFO] [stdout] 670 | pub fn parse_comment(input: &str) -> IResult<&str, &str, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is elided here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 670 | pub fn parse_comment(input: &str) -> IResult<&str, &str, NomError<'_>> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:678:29 [INFO] [stdout] | [INFO] [stdout] 678 | fn parse_shader_code(input: &str) -> IResult<&str, Option, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 678 | fn parse_shader_code(input: &str) -> IResult<&str, Option>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:692:29 [INFO] [stdout] | [INFO] [stdout] 692 | fn parse_ident_token(input: &str) -> IResult<&str, Token, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 692 | fn parse_ident_token(input: &str) -> IResult<&str, Token<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:705:23 [INFO] [stdout] | [INFO] [stdout] 705 | fn eat_newline(input: &str) -> IResult<&str, (), NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 705 | fn eat_newline(input: &str) -> IResult<&str, (), NomError<'_>> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:727:21 [INFO] [stdout] | [INFO] [stdout] 727 | fn get_inner(input: &str) -> IResult<&str, &str, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is elided here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 727 | fn get_inner(input: &str) -> IResult<&str, &str, NomError<'_>> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:739:23 [INFO] [stdout] | [INFO] [stdout] 739 | fn parse_inner(input: &str) -> IResult<&str, Vec, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 739 | fn parse_inner(input: &str) -> IResult<&str, Vec>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:747:20 [INFO] [stdout] | [INFO] [stdout] 747 | fn parse_if(input: &str) -> IResult<&str, Token, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 747 | fn parse_if(input: &str) -> IResult<&str, Token<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:780:23 [INFO] [stdout] | [INFO] [stdout] 780 | fn parse_range(input: &str) -> IResult<&str, Range, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 780 | fn parse_range(input: &str) -> IResult<&str, Range<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:796:21 [INFO] [stdout] | [INFO] [stdout] 796 | fn parse_for(input: &str) -> IResult<&str, Token, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 796 | fn parse_for(input: &str) -> IResult<&str, Token<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:815:24 [INFO] [stdout] | [INFO] [stdout] 815 | fn parse_concat(input: &str) -> IResult<&str, Token, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 815 | fn parse_concat(input: &str) -> IResult<&str, Token<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:837:22 [INFO] [stdout] | [INFO] [stdout] 837 | fn parse_nest(input: &str) -> IResult<&str, Token, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 837 | fn parse_nest(input: &str) -> IResult<&str, Token<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:866:24 [INFO] [stdout] | [INFO] [stdout] 866 | fn parse_import(input: &str) -> IResult<&str, Token, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 866 | fn parse_import(input: &str) -> IResult<&str, Token<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:874:24 [INFO] [stdout] | [INFO] [stdout] 874 | fn parse_export(input: &str) -> IResult<&str, Token, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 874 | fn parse_export(input: &str) -> IResult<&str, Token<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:886:32 [INFO] [stdout] | [INFO] [stdout] 886 | pub fn parse_tokens(mut input: &str) -> IResult<&str, Vec, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 886 | pub fn parse_tokens(mut input: &str) -> IResult<&str, Vec>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/automatic_buffers.rs:335:40 [INFO] [stdout] | [INFO] [stdout] 335 | pub fn get_inspect_buffers(&self) -> Vec { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 335 | pub fn get_inspect_buffers(&self) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/automatic_buffers.rs:346:44 [INFO] [stdout] | [INFO] [stdout] 346 | pub fn try_get_inspect_buffers(&self) -> Option> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 346 | pub fn try_get_inspect_buffers(&self) -> Option>> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/automatic_buffers.rs:361:32 [INFO] [stdout] | [INFO] [stdout] 361 | pub fn all_inspect_buffers(&self) -> Vec { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 361 | pub fn all_inspect_buffers(&self) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::borrow::Cow<'_, str>` [INFO] [stdout] --> src/parser.rs:89:48 [INFO] [stdout] | [INFO] [stdout] 89 | self.simplify(|ident| Some(Expr::Ident(ident.into()))) [INFO] [stdout] | ^^^^^^^^^^^^ help: consider removing `.into()`: `ident` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:263:9 [INFO] [stdout] | [INFO] [stdout] 263 | return Ok(out); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 263 - return Ok(out); [INFO] [stdout] 263 + Ok(out) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> src/parser.rs:149:36 [INFO] [stdout] | [INFO] [stdout] 149 | (e, Num(n)) if n == 1.0 => e, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] = note: `#[warn(clippy::redundant_guards)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 149 - (e, Num(n)) if n == 1.0 => e, [INFO] [stdout] 149 + (e, Num(1.0)) => e, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> src/parser.rs:170:36 [INFO] [stdout] | [INFO] [stdout] 170 | (Num(n), e) if n == 0.0 => Neg(Box::new(e)), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 170 - (Num(n), e) if n == 0.0 => Neg(Box::new(e)), [INFO] [stdout] 170 + (Num(0.0), e) => Neg(Box::new(e)), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> src/parser.rs:171:36 [INFO] [stdout] | [INFO] [stdout] 171 | (e, Num(n)) if n == 0.0 => e, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 171 - (e, Num(n)) if n == 0.0 => e, [INFO] [stdout] 171 + (e, Num(0.0)) => e, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> src/parser.rs:467:22 [INFO] [stdout] | [INFO] [stdout] 467 | c if c == '\\' => { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 467 - c if c == '\\' => { [INFO] [stdout] 467 + '\\' => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/parser.rs:714:5 [INFO] [stdout] | [INFO] [stdout] 714 | while let Some(ch) = chars.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for ch in chars` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:1064:14 [INFO] [stdout] | [INFO] [stdout] 1064 | _ => return Err(ExpansionError::NonBoolCondition(condition.into_owned())), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 1064 - _ => return Err(ExpansionError::NonBoolCondition(condition.into_owned())), [INFO] [stdout] 1064 + _ => Err(ExpansionError::NonBoolCondition(condition.into_owned())), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/parser.rs:1284:9 [INFO] [stdout] | [INFO] [stdout] 1284 | / match token { [INFO] [stdout] 1285 | | Token::Export(Export { name, tokens }) => { [INFO] [stdout] 1286 | | match exports.entry(name.clone()){ [INFO] [stdout] 1287 | | Entry::Occupied(_) => return Err(ExportedMoreThanOnce(name.to_string())), [INFO] [stdout] ... | [INFO] [stdout] 1291 | | _ => {} [INFO] [stdout] 1292 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1284 ~ if let Token::Export(Export { name, tokens }) = token { [INFO] [stdout] 1285 + match exports.entry(name.clone()){ [INFO] [stdout] 1286 + Entry::Occupied(_) => return Err(ExportedMoreThanOnce(name.to_string())), [INFO] [stdout] 1287 + Entry::Vacant(vacant) => vacant.insert(tokens.clone()), [INFO] [stdout] 1288 + }; [INFO] [stdout] 1289 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `utils::WorkgroupSize` [INFO] [stdout] --> src/shaderpreprocessor.rs:70:29 [INFO] [stdout] | [INFO] [stdout] 70 | workgroup_size: workgroup_size.into(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `workgroup_size` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/shaderpreprocessor.rs:194:9 [INFO] [stdout] | [INFO] [stdout] 194 | write!(&mut s, "{: >width$} {line}\n", i + 1, width = pad).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] = note: `#[warn(clippy::write_with_newline)]` on by default [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 194 - write!(&mut s, "{: >width$} {line}\n", i + 1, width = pad).unwrap(); [INFO] [stdout] 194 + writeln!(&mut s, "{: >width$} {line}", i + 1, width = pad).unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `let...else` may be rewritten with the `?` operator [INFO] [stdout] --> src/shaderpreprocessor.rs:305:5 [INFO] [stdout] | [INFO] [stdout] 305 | / let Some(ext) = path [INFO] [stdout] 306 | | .extension() [INFO] [stdout] 307 | | .and_then(|ext| ext.to_str()) [INFO] [stdout] 308 | | .map(|ext| ext.to_lowercase()) [INFO] [stdout] 309 | | else { [INFO] [stdout] 310 | | return None; [INFO] [stdout] 311 | | }; [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] help: replace it with [INFO] [stdout] | [INFO] [stdout] 305 ~ let ext = path [INFO] [stdout] 306 + .extension() [INFO] [stdout] 307 + .and_then(|ext| ext.to_str()) [INFO] [stdout] 308 + .map(|ext| ext.to_lowercase())?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `unwrap()` on `Err` value [INFO] [stdout] --> src/shaderpreprocessor.rs:358:33 [INFO] [stdout] | [INFO] [stdout] 358 | Err(err) => Err(ParseShaderError { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 359 | | name: name.clone(), [INFO] [stdout] 360 | | variant: ParseShaderErrorVariant::MultipleExports(err), [INFO] [stdout] 361 | | }) [INFO] [stdout] 362 | | .unwrap(), [INFO] [stdout] | |_____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_literal_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_literal_unwrap)]` on by default [INFO] [stdout] help: remove the `Err` and `unwrap()` [INFO] [stdout] | [INFO] [stdout] 358 ~ Err(err) => panic!("{:?}", ParseShaderError { [INFO] [stdout] 359 | name: name.clone(), [INFO] [stdout] 360 | variant: ParseShaderErrorVariant::MultipleExports(err), [INFO] [stdout] 361 ~ }), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/shaderpreprocessor.rs:377:43 [INFO] [stdout] | [INFO] [stdout] 377 | let parsed = parse_shader(&source).map_err(|err| ParseShaderError { [INFO] [stdout] | ^^^^^^^ help: change this to: `source` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/shaderpreprocessor.rs:416:28 [INFO] [stdout] | [INFO] [stdout] 416 | pub fn process_by_name<'wg, 'def>( [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> src/shaderpreprocessor.rs:664:5 [INFO] [stdout] | [INFO] [stdout] 664 | / map.into_iter() [INFO] [stdout] 665 | | .map(|(_group_idx, entries)| { [INFO] [stdout] 666 | | let desc = BindGroupLayoutDescriptor { [INFO] [stdout] 667 | | label, [INFO] [stdout] ... | [INFO] [stdout] 671 | | layout [INFO] [stdout] 672 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] = note: `#[warn(clippy::iter_kv_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 664 ~ map.into_values().map(|entries| { [INFO] [stdout] 665 + let desc = BindGroupLayoutDescriptor { [INFO] [stdout] 666 + label, [INFO] [stdout] 667 + entries: &entries, [INFO] [stdout] 668 + }; [INFO] [stdout] 669 + let layout = device.create_bind_group_layout(&desc); [INFO] [stdout] 670 + layout [INFO] [stdout] 671 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/shaderpreprocessor.rs:671:13 [INFO] [stdout] | [INFO] [stdout] 670 | let layout = device.create_bind_group_layout(&desc); [INFO] [stdout] | ---------------------------------------------------- unnecessary `let` binding [INFO] [stdout] 671 | layout [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 670 ~ [INFO] [stdout] 671 ~ device.create_bind_group_layout(&desc) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/utils.rs:28:28 [INFO] [stdout] | [INFO] [stdout] 28 | let exact_workgroups = (len as usize + wg_size as usize - 1) / wg_size as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `(len as usize).div_ceil(wg_size as usize)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] = note: `#[warn(clippy::manual_div_ceil)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/utils.rs:284:6 [INFO] [stdout] | [INFO] [stdout] 284 | impl<'a> BindingGroup for [(u32, &'a wgpu::Buffer)] { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 284 - impl<'a> BindingGroup for [(u32, &'a wgpu::Buffer)] { [INFO] [stdout] 284 + impl BindingGroup for [(u32, &wgpu::Buffer)] { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/utils.rs:307:6 [INFO] [stdout] | [INFO] [stdout] 307 | impl<'a, const N: usize> BindingGroup for [(u32, &'a wgpu::Buffer); N] { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 307 - impl<'a, const N: usize> BindingGroup for [(u32, &'a wgpu::Buffer); N] { [INFO] [stdout] 307 + impl BindingGroup for [(u32, &wgpu::Buffer); N] { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/utils.rs:330:6 [INFO] [stdout] | [INFO] [stdout] 330 | impl<'a> BindingGroup for HashMap { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 330 - impl<'a> BindingGroup for HashMap { [INFO] [stdout] 330 + impl BindingGroup for HashMap { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/utils.rs:383:6 [INFO] [stdout] | [INFO] [stdout] 383 | impl<'a> BindingGroup for Vec<(u32, &'a wgpu::Buffer)> { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 383 - impl<'a> BindingGroup for Vec<(u32, &'a wgpu::Buffer)> { [INFO] [stdout] 383 + impl BindingGroup for Vec<(u32, &wgpu::Buffer)> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the impl [INFO] [stdout] --> src/utils.rs:405:6 [INFO] [stdout] | [INFO] [stdout] 405 | impl<'a, T: BindingGroup> BindingGroup for &T { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unsafe function's docs are missing a `# Safety` section [INFO] [stdout] --> src/utils.rs:444:1 [INFO] [stdout] | [INFO] [stdout] 444 | pub unsafe fn any_as_u8_slice(p: &T) -> &[u8] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_safety_doc [INFO] [stdout] = note: `#[warn(clippy::missing_safety_doc)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/utils.rs:504:31 [INFO] [stdout] | [INFO] [stdout] 504 | n_workgroups[i] = (dims[i] + wgsize[i] - 1) / wgsize[i]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `dims[i].div_ceil(wgsize[i])` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/utils.rs:671:47 [INFO] [stdout] | [INFO] [stdout] 671 | std::fs::write(&save_name, &data).expect(save_name.as_os_str().to_str().unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("{}", save_name.as_os_str().to_str().unwrap()))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/utils.rs:677:28 [INFO] [stdout] | [INFO] [stdout] 677 | std::fs::write(&save_path.join("load.py"), &contents).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `save_path.join("load.py")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/utils.rs:735:16 [INFO] [stdout] | [INFO] [stdout] 735 | pub fn new<'a>( [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/utils.rs:761:12 [INFO] [stdout] | [INFO] [stdout] 761 | if push_constants.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!push_constants.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/utils.rs:787:9 [INFO] [stdout] | [INFO] [stdout] 787 | / match self.pipeline.dispatcher { [INFO] [stdout] 788 | | Some(ref dispatcher) => { [INFO] [stdout] 789 | | dispatcher.reset_indirect(encoder); [INFO] [stdout] ... | [INFO] [stdout] 792 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 787 ~ if let Some(ref dispatcher) = self.pipeline.dispatcher { [INFO] [stdout] 788 + dispatcher.reset_indirect(encoder); [INFO] [stdout] 789 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/utils.rs:873:20 [INFO] [stdout] | [INFO] [stdout] 873 | if !(storage == "storage") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(storage != "storage")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/utils.rs:871:64 [INFO] [stdout] | [INFO] [stdout] 871 | let (storage, read_write) = ty.split_once(",").expect(&ty_err()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| panic!("{}", ty_err()))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `::Buffer` which implements the `Copy` trait [INFO] [stdout] --> src/automatic_buffers.rs:46:19 [INFO] [stdout] | [INFO] [stdout] 46 | name: self.name.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `BufferUsages` which implements the `Copy` trait [INFO] [stdout] --> src/automatic_buffers.rs:48:20 [INFO] [stdout] | [INFO] [stdout] 48 | usage: self.usage.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.usage` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/automatic_buffers.rs:49:19 [INFO] [stdout] | [INFO] [stdout] 49 | size: self.size.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.size` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `()` [INFO] [stdout] --> src/automatic_buffers.rs:86:24 [INFO] [stdout] | [INFO] [stdout] 86 | return (); [INFO] [stdout] | ^^ help: remove the `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `()` [INFO] [stdout] --> src/automatic_buffers.rs:98:16 [INFO] [stdout] | [INFO] [stdout] 98 | return (); [INFO] [stdout] | ^^ help: remove the `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/automatic_buffers.rs:188:17 [INFO] [stdout] | [INFO] [stdout] 188 | / match &mut buf.currently_backing { [INFO] [stdout] 189 | | Some((abs_buf, just_set)) => { [INFO] [stdout] 190 | | if *just_set { [INFO] [stdout] 191 | | if buf.size < abs_buf.size { [INFO] [stdout] ... | [INFO] [stdout] 212 | | None => (), [INFO] [stdout] 213 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 188 ~ if let Some((abs_buf, just_set)) = &mut buf.currently_backing { [INFO] [stdout] 189 + if *just_set { [INFO] [stdout] 190 + if buf.size < abs_buf.size { [INFO] [stdout] 191 + buf.size = abs_buf.size [INFO] [stdout] 192 + } [INFO] [stdout] 193 + buf.usage = buf.usage.union(abs_buf.usage); [INFO] [stdout] 194 + these_assignments.insert(abs_buf.name, (buf_idx, abs_buf.clone())); [INFO] [stdout] 195 + *just_set = false; [INFO] [stdout] 196 + } [INFO] [stdout] 197 + [INFO] [stdout] 198 + match abs_buf.memory_req { [INFO] [stdout] 199 + MemoryReq::UnInitOk | MemoryReq::Strict => { [INFO] [stdout] 200 + if last_usage[&abs_buf.name] == operation_idx { [INFO] [stdout] 201 + buf.currently_backing = None; [INFO] [stdout] 202 + [INFO] [stdout] 203 + // Purely a sanity check [INFO] [stdout] 204 + } else if last_usage[&abs_buf.name] < operation_idx { [INFO] [stdout] 205 + unreachable!() [INFO] [stdout] 206 + } [INFO] [stdout] 207 + } [INFO] [stdout] 208 + MemoryReq::Temporary => buf.currently_backing = None, [INFO] [stdout] 209 + } [INFO] [stdout] 210 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `::Buffer` which implements the `Copy` trait [INFO] [stdout] --> src/automatic_buffers.rs:329:42 [INFO] [stdout] | [INFO] [stdout] 329 | .map(|(name, (idx, _))| (name.clone(), &self.buffers[*idx])) [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/automatic_buffers.rs:437:14 [INFO] [stdout] | [INFO] [stdout] 437 | buffers: fn(&PT::Params) -> (TypeId, &'static str, Vec>), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/automatic_buffers.rs:438:13 [INFO] [stdout] | [INFO] [stdout] 438 | set_up: fn( [INFO] [stdout] | _____________^ [INFO] [stdout] 439 | | &wgpu::Device, [INFO] [stdout] 440 | | &PT::Params, [INFO] [stdout] 441 | | &BufferSolution, [INFO] [stdout] 442 | | ) -> Result>, PT::Error>, [INFO] [stdout] | |_________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:267:22 [INFO] [stdout] | [INFO] [stdout] 267 | fn parse_bool(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 267 | fn parse_bool(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:279:21 [INFO] [stdout] | [INFO] [stdout] 279 | fn parse_num(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 279 | fn parse_num(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:283:23 [INFO] [stdout] | [INFO] [stdout] 283 | fn parse_ident(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 283 | fn parse_ident(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:296:24 [INFO] [stdout] | [INFO] [stdout] 296 | fn parse_parens(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 296 | fn parse_parens(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:307:21 [INFO] [stdout] | [INFO] [stdout] 307 | fn parse_neg(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 307 | fn parse_neg(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:314:21 [INFO] [stdout] | [INFO] [stdout] 314 | fn parse_not(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 314 | fn parse_not(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:321:24 [INFO] [stdout] | [INFO] [stdout] 321 | fn parse_factor(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 321 | fn parse_factor(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:332:25 [INFO] [stdout] | [INFO] [stdout] 332 | fn parse_mul_div(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 332 | fn parse_mul_div(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:350:25 [INFO] [stdout] | [INFO] [stdout] 350 | fn parse_add_sub(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 350 | fn parse_add_sub(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:368:28 [INFO] [stdout] | [INFO] [stdout] 368 | fn parse_comparison(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 368 | fn parse_comparison(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:411:21 [INFO] [stdout] | [INFO] [stdout] 411 | fn parse_and(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 411 | fn parse_and(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:425:20 [INFO] [stdout] | [INFO] [stdout] 425 | fn parse_or(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 425 | fn parse_or(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:439:26 [INFO] [stdout] | [INFO] [stdout] 439 | pub fn parse_expr(input: &str) -> IResult<&str, Expr, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 439 | pub fn parse_expr(input: &str) -> IResult<&str, Expr<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:443:32 [INFO] [stdout] | [INFO] [stdout] 443 | pub fn parse_token_expr(input: &str) -> IResult<&str, Token, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 443 | pub fn parse_token_expr(input: &str) -> IResult<&str, Token<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:670:29 [INFO] [stdout] | [INFO] [stdout] 670 | pub fn parse_comment(input: &str) -> IResult<&str, &str, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is elided here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 670 | pub fn parse_comment(input: &str) -> IResult<&str, &str, NomError<'_>> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:678:29 [INFO] [stdout] | [INFO] [stdout] 678 | fn parse_shader_code(input: &str) -> IResult<&str, Option, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 678 | fn parse_shader_code(input: &str) -> IResult<&str, Option>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:692:29 [INFO] [stdout] | [INFO] [stdout] 692 | fn parse_ident_token(input: &str) -> IResult<&str, Token, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 692 | fn parse_ident_token(input: &str) -> IResult<&str, Token<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:705:23 [INFO] [stdout] | [INFO] [stdout] 705 | fn eat_newline(input: &str) -> IResult<&str, (), NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 705 | fn eat_newline(input: &str) -> IResult<&str, (), NomError<'_>> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:727:21 [INFO] [stdout] | [INFO] [stdout] 727 | fn get_inner(input: &str) -> IResult<&str, &str, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is elided here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 727 | fn get_inner(input: &str) -> IResult<&str, &str, NomError<'_>> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:739:23 [INFO] [stdout] | [INFO] [stdout] 739 | fn parse_inner(input: &str) -> IResult<&str, Vec, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 739 | fn parse_inner(input: &str) -> IResult<&str, Vec>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:747:20 [INFO] [stdout] | [INFO] [stdout] 747 | fn parse_if(input: &str) -> IResult<&str, Token, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 747 | fn parse_if(input: &str) -> IResult<&str, Token<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:780:23 [INFO] [stdout] | [INFO] [stdout] 780 | fn parse_range(input: &str) -> IResult<&str, Range, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 780 | fn parse_range(input: &str) -> IResult<&str, Range<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:796:21 [INFO] [stdout] | [INFO] [stdout] 796 | fn parse_for(input: &str) -> IResult<&str, Token, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 796 | fn parse_for(input: &str) -> IResult<&str, Token<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:815:24 [INFO] [stdout] | [INFO] [stdout] 815 | fn parse_concat(input: &str) -> IResult<&str, Token, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 815 | fn parse_concat(input: &str) -> IResult<&str, Token<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:837:22 [INFO] [stdout] | [INFO] [stdout] 837 | fn parse_nest(input: &str) -> IResult<&str, Token, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 837 | fn parse_nest(input: &str) -> IResult<&str, Token<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:866:24 [INFO] [stdout] | [INFO] [stdout] 866 | fn parse_import(input: &str) -> IResult<&str, Token, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 866 | fn parse_import(input: &str) -> IResult<&str, Token<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:874:24 [INFO] [stdout] | [INFO] [stdout] 874 | fn parse_export(input: &str) -> IResult<&str, Token, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 874 | fn parse_export(input: &str) -> IResult<&str, Token<'_>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser.rs:886:32 [INFO] [stdout] | [INFO] [stdout] 886 | pub fn parse_tokens(mut input: &str) -> IResult<&str, Vec, NomError> { [INFO] [stdout] | ^^^^ ^^^^ ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is elided here [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 886 | pub fn parse_tokens(mut input: &str) -> IResult<&str, Vec>, NomError<'_>> { [INFO] [stdout] | ++++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/automatic_buffers.rs:335:40 [INFO] [stdout] | [INFO] [stdout] 335 | pub fn get_inspect_buffers(&self) -> Vec { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 335 | pub fn get_inspect_buffers(&self) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/automatic_buffers.rs:346:44 [INFO] [stdout] | [INFO] [stdout] 346 | pub fn try_get_inspect_buffers(&self) -> Option> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 346 | pub fn try_get_inspect_buffers(&self) -> Option>> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/automatic_buffers.rs:361:32 [INFO] [stdout] | [INFO] [stdout] 361 | pub fn all_inspect_buffers(&self) -> Vec { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 361 | pub fn all_inspect_buffers(&self) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 49.26s [INFO] running `Command { std: "docker" "inspect" "aa1fbb0dfe00fbf23d47802ecf4170b2fb7bd910b910b8cc4ddbddc1075af2c3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "aa1fbb0dfe00fbf23d47802ecf4170b2fb7bd910b910b8cc4ddbddc1075af2c3", kill_on_drop: false }` [INFO] [stdout] aa1fbb0dfe00fbf23d47802ecf4170b2fb7bd910b910b8cc4ddbddc1075af2c3