[INFO] fetching crate open-cl-core 0.2.1... [INFO] linting open-cl-core-0.2.1 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate open-cl-core 0.2.1 into /workspace/builds/worker-1-tc1/source [INFO] started tweaking crates.io crate open-cl-core 0.2.1 [INFO] removed 0 missing examples [INFO] finished tweaking crates.io crate open-cl-core 0.2.1 [INFO] tweaked toml for crates.io crate open-cl-core 0.2.1 written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate open-cl-core 0.2.1 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] crate crates.io crate open-cl-core 0.2.1 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded proc-macro2 v1.0.9 [INFO] [stderr] Downloaded which v3.1.0 [INFO] [stderr] Downloaded paste-impl v0.1.7 [INFO] [stderr] Downloaded proc-macro-hack v0.5.11 [INFO] [stderr] Downloaded paste v0.1.7 [INFO] [stderr] Downloaded open-cl-sys v0.1.0 [INFO] [stderr] Downloaded failure_derive v0.1.6 [INFO] [stderr] Downloaded hermit-abi v0.1.8 [INFO] [stderr] Downloaded num-iter v0.1.40 [INFO] [stderr] Downloaded winapi-util v0.1.3 [INFO] [stderr] Downloaded colored v1.9.3 [INFO] [stderr] Downloaded env_logger v0.7.1 [INFO] [stderr] Downloaded failure v0.1.6 [INFO] [stderr] Downloaded backtrace v0.3.44 [INFO] [stderr] Downloaded open-cl-low-level v0.2.1 [INFO] [stderr] Downloaded cc v1.0.50 [INFO] [stderr] Downloaded nom v4.2.3 [INFO] [stderr] Downloaded chrono v0.4.10 [INFO] [stderr] Downloaded aho-corasick v0.7.9 [INFO] [stderr] Downloaded bindgen v0.51.1 [INFO] [stderr] Downloaded syn v1.0.16 [INFO] [stderr] Downloaded half v1.4.1 [INFO] [stderr] Downloaded glob v0.3.0 [INFO] [stderr] Downloaded regex v1.3.4 [INFO] [stderr] Downloaded clang-sys v0.28.1 [INFO] [stderr] Downloaded cexpr v0.3.6 [INFO] [stderr] Downloaded regex-syntax v0.6.15 [INFO] [stderr] Downloaded unicode-width v0.1.7 [INFO] [stderr] Downloaded termcolor v1.1.0 [INFO] [stderr] Downloaded env_logger v0.6.2 [INFO] [stderr] Downloaded num-rational v0.2.3 [INFO] [stderr] Downloaded libloading v0.5.2 [INFO] [stderr] Downloaded libc v0.2.67 [INFO] [stderr] Downloaded backtrace-sys v0.1.32 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] d7407db3c1e82c30b0636921ff96850a25e7e7caea921b32643ca6759cb9b4db [INFO] running `Command { std: "docker" "start" "-a" "d7407db3c1e82c30b0636921ff96850a25e7e7caea921b32643ca6759cb9b4db", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "d7407db3c1e82c30b0636921ff96850a25e7e7caea921b32643ca6759cb9b4db", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d7407db3c1e82c30b0636921ff96850a25e7e7caea921b32643ca6759cb9b4db", kill_on_drop: false }` [INFO] [stdout] d7407db3c1e82c30b0636921ff96850a25e7e7caea921b32643ca6759cb9b4db [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 79c170bfcf5358658968015d4a4ea65e69d7de1d36ed1b939e1842f492fc6d88 [INFO] running `Command { std: "docker" "start" "-a" "79c170bfcf5358658968015d4a4ea65e69d7de1d36ed1b939e1842f492fc6d88", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.67 [INFO] [stderr] Compiling autocfg v1.0.0 [INFO] [stderr] Compiling memchr v2.3.3 [INFO] [stderr] Compiling proc-macro2 v1.0.9 [INFO] [stderr] Compiling unicode-xid v0.2.0 [INFO] [stderr] Compiling cc v1.0.50 [INFO] [stderr] Compiling log v0.4.8 [INFO] [stderr] Compiling bitflags v1.2.1 [INFO] [stderr] Compiling syn v1.0.16 [INFO] [stderr] Compiling version_check v0.1.5 [INFO] [stderr] Compiling glob v0.3.0 [INFO] [stderr] Compiling lazy_static v1.4.0 [INFO] [stderr] Compiling quick-error v1.2.3 [INFO] [stderr] Compiling cfg-if v0.1.10 [INFO] [stderr] Compiling unicode-width v0.1.7 [INFO] [stderr] Compiling regex-syntax v0.6.15 [INFO] [stderr] Compiling humantime v1.3.0 [INFO] [stderr] Compiling textwrap v0.11.0 [INFO] [stderr] Compiling thread_local v1.0.1 [INFO] [stderr] Compiling strsim v0.8.0 [INFO] [stderr] Compiling vec_map v0.8.1 [INFO] [stderr] Compiling termcolor v1.1.0 [INFO] [stderr] Compiling bindgen v0.51.1 [INFO] [stderr] Compiling ansi_term v0.11.0 [INFO] [stderr] Compiling shlex v0.1.1 [INFO] [stderr] Compiling nom v4.2.3 [INFO] [stderr] Compiling aho-corasick v0.7.9 [INFO] [stderr] Compiling clang-sys v0.28.1 [INFO] [stderr] Compiling failure_derive v0.1.6 [INFO] [stderr] Compiling num-traits v0.2.11 [INFO] [stderr] Compiling num-integer v0.1.42 [INFO] [stderr] Compiling num-bigint v0.2.6 [INFO] [stderr] Compiling num-rational v0.2.3 [INFO] [stderr] Compiling num-iter v0.1.40 [INFO] [stderr] Compiling num-complex v0.2.4 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking rustc-demangle v0.1.16 [INFO] [stderr] Compiling clap v2.33.0 [INFO] [stderr] Compiling which v3.1.0 [INFO] [stderr] Checking time v0.1.42 [INFO] [stderr] Checking colored v1.9.3 [INFO] [stderr] Checking half v1.4.1 [INFO] [stderr] Compiling libloading v0.5.2 [INFO] [stderr] Compiling backtrace-sys v0.1.32 [INFO] [stderr] Compiling cexpr v0.3.6 [INFO] [stderr] Compiling quote v1.0.2 [INFO] [stderr] Checking chrono v0.4.10 [INFO] [stderr] Checking backtrace v0.3.44 [INFO] [stderr] Checking regex v1.3.4 [INFO] [stderr] Checking num v0.2.1 [INFO] [stderr] Checking env_logger v0.7.1 [INFO] [stderr] Compiling env_logger v0.6.2 [INFO] [stderr] Compiling synstructure v0.12.3 [INFO] [stderr] Compiling proc-macro-hack v0.5.11 [INFO] [stderr] Compiling paste-impl v0.1.7 [INFO] [stderr] Checking failure v0.1.6 [INFO] [stderr] Checking paste v0.1.7 [INFO] [stderr] Compiling open-cl-sys v0.1.0 [INFO] [stderr] Checking open-cl-low-level v0.2.1 [INFO] [stderr] Checking open-cl-core v0.2.1 (/opt/rustwide/workdir) [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/lib.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / /// objects, memory objects, program and kernel objects are not thread-safe. [INFO] [stdout] 7 | | [INFO] [stdout] | |_^ [INFO] [stdout] ... [INFO] [stdout] 10 | extern crate log; [INFO] [stdout] | ---------------- the comment documents this extern crate [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the crate use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 1 ~ //! [INFO] [stdout] 2 ~ //! The OpenCL implementation is thread-safe for API calls that create, [INFO] [stdout] 3 ~ //! retain and release objects such as a context, command-queue, program, [INFO] [stdout] 4 ~ //! kernel and memory objects. OpenCL API calls that queue commands to a [INFO] [stdout] 5 ~ //! command-queue or change the state of OpenCL objects such as command-queue [INFO] [stdout] 6 ~ //! objects, memory objects, program and kernel objects are not thread-safe. [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> src/lib.rs:16:1 [INFO] [stdout] | [INFO] [stdout] 16 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/lib.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / /// objects, memory objects, program and kernel objects are not thread-safe. [INFO] [stdout] 7 | | [INFO] [stdout] | |_^ [INFO] [stdout] ... [INFO] [stdout] 10 | extern crate log; [INFO] [stdout] | ---------------- the comment documents this extern crate [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the crate use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 1 ~ //! [INFO] [stdout] 2 ~ //! The OpenCL implementation is thread-safe for API calls that create, [INFO] [stdout] 3 ~ //! retain and release objects such as a context, command-queue, program, [INFO] [stdout] 4 ~ //! kernel and memory objects. OpenCL API calls that queue commands to a [INFO] [stdout] 5 ~ //! command-queue or change the state of OpenCL objects such as command-queue [INFO] [stdout] 6 ~ //! objects, memory objects, program and kernel objects are not thread-safe. [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> src/lib.rs:16:1 [INFO] [stdout] | [INFO] [stdout] 16 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/command_queue.rs:237:17 [INFO] [stdout] | [INFO] [stdout] 237 | const SRC: &'static str = " [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/session.rs:292:17 [INFO] [stdout] | [INFO] [stdout] 292 | const SRC: &'static str = "__kernel void test(__global int *data) { [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> src/buffer.rs:57:19 [INFO] [stdout] | [INFO] [stdout] 57 | _mem: Arc::new(RwLock::new(ll_mem)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc>` is not `Send` and `Sync` as `RwLock` is not `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `RwLock` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] = note: `#[warn(clippy::arc_with_non_send_sync)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Buffer` has a public `len` method, but no `is_empty` method [INFO] [stdout] --> src/buffer.rs:155:5 [INFO] [stdout] | [INFO] [stdout] 155 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stdout] = note: `#[warn(clippy::len_without_is_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unsafe function's docs are missing a `# Safety` section [INFO] [stdout] --> src/command_queue.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | unsafe fn write_lock(&self) -> RwLockWriteGuard

; [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: unsafe function's docs are missing a `# Safety` section [INFO] [stdout] --> src/command_queue.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | unsafe fn read_lock(&self) -> RwLockReadGuard

; [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] [INFO] [stdout] [INFO] [stdout] warning: unsafe function's docs are missing a `# Safety` section [INFO] [stdout] --> src/command_queue.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | unsafe fn rw_lock(&self) -> &RwLock

; [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] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/command_queue.rs:44:9 [INFO] [stdout] | [INFO] [stdout] 44 | &(*self._queue) [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `&self._queue` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> src/command_queue.rs:102:39 [INFO] [stdout] | [INFO] [stdout] 102 | _queue: ManuallyDrop::new(Arc::new(RwLock::new(queue))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc>>` is not `Send` and `Sync` as `RwLock>` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `RwLock>` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/command_queue.rs:167:44 [INFO] [stdout] | [INFO] [stdout] 167 | let event = qlock.write_buffer(&mut *buf_lock, host_buffer, opts.into())?; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&mut buf_lock` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::option::Option` [INFO] [stdout] --> src/command_queue.rs:167:73 [INFO] [stdout] | [INFO] [stdout] 167 | let event = qlock.write_buffer(&mut *buf_lock, host_buffer, opts.into())?; [INFO] [stdout] | ^^^^^^^^^^^ help: consider removing `.into()`: `opts` [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: deref which would be done by auto-deref [INFO] [stdout] --> src/command_queue.rs:184:47 [INFO] [stdout] | [INFO] [stdout] 184 | let mut event = qlock.read_buffer(&*buf_lock, host_buffer, opts)?; [INFO] [stdout] | ^^^^^^^^^^ help: try: `&buf_lock` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/command_queue.rs:198:46 [INFO] [stdout] | [INFO] [stdout] 198 | let event = qlock.enqueue_kernel(&mut (*kernel_lock), work, opts)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&mut kernel_lock` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/context.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | &*self.inner [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&self.inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/context.rs:43:63 [INFO] [stdout] | [INFO] [stdout] 43 | let devices: Vec = ll_devices.into_iter().map(|d| Device::new(d)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Device::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/device.rs:12:29 [INFO] [stdout] | [INFO] [stdout] 12 | devices.into_iter().map(|d| Device::new(d)).collect() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Device::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/device.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 54 | &*self.inner [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&self.inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> src/kernel.rs:30:38 [INFO] [stdout] | [INFO] [stdout] 30 | inner: ManuallyDrop::new(Arc::new(RwLock::new(inner_clone))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc>>` is not `Send` and `Sync` as `RwLock>` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `RwLock>` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unsafe function's docs are missing a `# Safety` section [INFO] [stdout] --> src/kernel.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | pub unsafe fn new(kernel: ClKernel, program: Program) -> Kernel { [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] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> src/kernel.rs:41:38 [INFO] [stdout] | [INFO] [stdout] 41 | inner: ManuallyDrop::new(Arc::new(RwLock::new(kernel))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc>>` is not `Send` and `Sync` as `RwLock>` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `RwLock>` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unsafe function's docs are missing a `# Safety` section [INFO] [stdout] --> src/kernel.rs:51:5 [INFO] [stdout] | [INFO] [stdout] 51 | / pub unsafe fn set_arg(&self, arg_index: usize, arg: &mut T) -> Output<()> [INFO] [stdout] 52 | | where [INFO] [stdout] 53 | | T: KernelArg, [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] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/kernel.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | &*self.program [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&self.program` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/platform.rs:60:64 [INFO] [stdout] | [INFO] [stdout] 60 | ll::list_platforms().map(|plats| plats.into_iter().map(|p| Platform::new(p)).collect()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Platform::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unsafe function's docs are missing a `# Safety` section [INFO] [stdout] --> src/program.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | pub unsafe fn new(program: ClProgram, context: ClContext) -> UnbuiltProgram { [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] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/program.rs:92:22 [INFO] [stdout] | [INFO] [stdout] 92 | .map(|d| Device::new(d)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Device::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unsafe function's docs are missing a `# Safety` section [INFO] [stdout] --> src/program.rs:125:5 [INFO] [stdout] | [INFO] [stdout] 125 | pub unsafe fn new(object: ClProgram, context: Context, devices: Vec) -> Program { [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] [INFO] [stdout] [INFO] [stdout] warning: unsafe function's docs are missing a `# Safety` section [INFO] [stdout] --> src/program.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 134 | pub unsafe fn from_low_level_program(program: &ClProgram) -> Output { [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] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/program.rs:137:53 [INFO] [stdout] | [INFO] [stdout] 137 | let hl_devices = ll_devices.into_iter().map(|d| Device::new(d)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Device::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> src/session.rs:51:47 [INFO] [stdout] | [INFO] [stdout] 51 | _queue: ManuallyDrop::new(Arc::new(RwLock::new(queue))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc>>` is not `Send` and `Sync` as `RwLock>` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `RwLock>` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/session.rs:65:62 [INFO] [stdout] | [INFO] [stdout] 65 | .map(|ll_devices| ll_devices.into_iter().map(|d| Device::new(d)).collect())?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Device::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/session.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | &*self._device [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&self._device` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> src/session.rs:114:39 [INFO] [stdout] | [INFO] [stdout] 114 | _queue: ManuallyDrop::new(Arc::new(RwLock::new(copied_queue))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc>>` is not `Send` and `Sync` as `RwLock>` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `RwLock>` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/session.rs:173:53 [INFO] [stdout] | [INFO] [stdout] 173 | let event: ClEvent = queue.write_buffer(&mut (*buffer_lock), host_buffer, opts)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&mut buffer_lock` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/session.rs:193:35 [INFO] [stdout] | [INFO] [stdout] 193 | queue.read_buffer(&(*buffer_lock), host_buffer, opts)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `&buffer_lock` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/session.rs:213:46 [INFO] [stdout] | [INFO] [stdout] 213 | let event = queue.enqueue_kernel(&mut (*kernel_lock), work, opts)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&mut kernel_lock` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/session.rs:233:41 [INFO] [stdout] | [INFO] [stdout] 233 | KernelOpArg::Buffer(ref buffer) => { [INFO] [stdout] | ^^^^^^^^^^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 233 - KernelOpArg::Buffer(ref buffer) => { [INFO] [stdout] 233 + KernelOpArg::Buffer(buffer) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/buffer.rs:127:22 [INFO] [stdout] | [INFO] [stdout] 127 | pub fn read_lock(&self) -> RwLockReadGuard { [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] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 127 | pub fn read_lock(&self) -> RwLockReadGuard<'_, ClMem> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/buffer.rs:131:23 [INFO] [stdout] | [INFO] [stdout] 131 | pub fn write_lock(&self) -> RwLockWriteGuard { [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] 131 | pub fn write_lock(&self) -> RwLockWriteGuard<'_, ClMem> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/command_queue.rs:16:26 [INFO] [stdout] | [INFO] [stdout] 16 | unsafe fn write_lock(&self) -> RwLockWriteGuard

; [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] 16 | unsafe fn write_lock(&self) -> RwLockWriteGuard<'_, P>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/command_queue.rs:17:25 [INFO] [stdout] | [INFO] [stdout] 17 | unsafe fn read_lock(&self) -> RwLockReadGuard

; [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] 17 | unsafe fn read_lock(&self) -> RwLockReadGuard<'_, P>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/command_queue.rs:37:25 [INFO] [stdout] | [INFO] [stdout] 37 | unsafe fn read_lock(&self) -> RwLockReadGuard { [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] 37 | unsafe fn read_lock(&self) -> RwLockReadGuard<'_, ClCommandQueue> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/command_queue.rs:40:26 [INFO] [stdout] | [INFO] [stdout] 40 | unsafe fn write_lock(&self) -> RwLockWriteGuard { [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] 40 | unsafe fn write_lock(&self) -> RwLockWriteGuard<'_, ClCommandQueue> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/kernel.rs:82:22 [INFO] [stdout] | [INFO] [stdout] 82 | pub fn read_lock(&self) -> RwLockReadGuard { [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] 82 | pub fn read_lock(&self) -> RwLockReadGuard<'_, ClKernel> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/kernel.rs:86:23 [INFO] [stdout] | [INFO] [stdout] 86 | pub fn write_lock(&self) -> RwLockWriteGuard { [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] 86 | pub fn write_lock(&self) -> RwLockWriteGuard<'_, ClKernel> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/kernel.rs:145:22 [INFO] [stdout] | [INFO] [stdout] 145 | pub fn new(name: &str) -> KernelOperation { [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] 145 | pub fn new(name: &str) -> KernelOperation<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/kernel.rs:163:17 [INFO] [stdout] | [INFO] [stdout] 163 | pub fn args(&self) -> &[KernelOpArg] { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^ [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] 163 | pub fn args(&self) -> &[KernelOpArg<'_, T>] { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/session.rs:83:23 [INFO] [stdout] | [INFO] [stdout] 83 | pub fn read_queue(&self) -> RwLockReadGuard { [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] 83 | pub fn read_queue(&self) -> RwLockReadGuard<'_, ClCommandQueue> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/session.rs:87:24 [INFO] [stdout] | [INFO] [stdout] 87 | pub fn write_queue(&self) -> RwLockWriteGuard { [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] 87 | pub fn write_queue(&self) -> RwLockWriteGuard<'_, ClCommandQueue> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/testing.rs:69:13 [INFO] [stdout] | [INFO] [stdout] 69 | assert!(devices.len() > 0, "No usable devices found"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!devices.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: length comparison to zero [INFO] [stdout] --> src/testing.rs:89:13 [INFO] [stdout] | [INFO] [stdout] 89 | assert!(devices.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!devices.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] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> src/buffer.rs:57:19 [INFO] [stdout] | [INFO] [stdout] 57 | _mem: Arc::new(RwLock::new(ll_mem)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc>` is not `Send` and `Sync` as `RwLock` is not `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `RwLock` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] = note: `#[warn(clippy::arc_with_non_send_sync)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Buffer` has a public `len` method, but no `is_empty` method [INFO] [stdout] --> src/buffer.rs:155:5 [INFO] [stdout] | [INFO] [stdout] 155 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stdout] = note: `#[warn(clippy::len_without_is_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unsafe function's docs are missing a `# Safety` section [INFO] [stdout] --> src/command_queue.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | unsafe fn write_lock(&self) -> RwLockWriteGuard

; [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: unsafe function's docs are missing a `# Safety` section [INFO] [stdout] --> src/command_queue.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | unsafe fn read_lock(&self) -> RwLockReadGuard

; [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] [INFO] [stdout] [INFO] [stdout] warning: unsafe function's docs are missing a `# Safety` section [INFO] [stdout] --> src/command_queue.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | unsafe fn rw_lock(&self) -> &RwLock

; [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] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/command_queue.rs:44:9 [INFO] [stdout] | [INFO] [stdout] 44 | &(*self._queue) [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `&self._queue` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> src/command_queue.rs:102:39 [INFO] [stdout] | [INFO] [stdout] 102 | _queue: ManuallyDrop::new(Arc::new(RwLock::new(queue))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc>>` is not `Send` and `Sync` as `RwLock>` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `RwLock>` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/command_queue.rs:167:44 [INFO] [stdout] | [INFO] [stdout] 167 | let event = qlock.write_buffer(&mut *buf_lock, host_buffer, opts.into())?; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&mut buf_lock` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::option::Option` [INFO] [stdout] --> src/command_queue.rs:167:73 [INFO] [stdout] | [INFO] [stdout] 167 | let event = qlock.write_buffer(&mut *buf_lock, host_buffer, opts.into())?; [INFO] [stdout] | ^^^^^^^^^^^ help: consider removing `.into()`: `opts` [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: deref which would be done by auto-deref [INFO] [stdout] --> src/command_queue.rs:184:47 [INFO] [stdout] | [INFO] [stdout] 184 | let mut event = qlock.read_buffer(&*buf_lock, host_buffer, opts)?; [INFO] [stdout] | ^^^^^^^^^^ help: try: `&buf_lock` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/command_queue.rs:198:46 [INFO] [stdout] | [INFO] [stdout] 198 | let event = qlock.enqueue_kernel(&mut (*kernel_lock), work, opts)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&mut kernel_lock` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> examples/simple_add/main.rs:19:8 [INFO] [stdout] | [INFO] [stdout] 19 | if platforms.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `platforms.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: length comparison to zero [INFO] [stdout] --> examples/simple_add/main.rs:26:8 [INFO] [stdout] | [INFO] [stdout] 26 | if devices.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `devices.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] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/command_queue.rs:270:12 [INFO] [stdout] | [INFO] [stdout] 270 | if !maybe_same_prop.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `maybe_same_prop.is_none()` [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: deref which would be done by auto-deref [INFO] [stdout] --> src/context.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | &*self.inner [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&self.inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> examples/simple_add/main.rs:43:24 [INFO] [stdout] | [INFO] [stdout] 43 | let program2 = (&program).clone(); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `program` [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: redundant closure [INFO] [stdout] --> src/context.rs:43:63 [INFO] [stdout] | [INFO] [stdout] 43 | let devices: Vec = ll_devices.into_iter().map(|d| Device::new(d)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Device::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this let-binding has unit value [INFO] [stdout] --> examples/simple_add/main.rs:69:9 [INFO] [stdout] | [INFO] [stdout] 69 | let _write_event_a = command_queue.write_buffer(&mem_a, &vec_a, None).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] = note: `#[warn(clippy::let_unit_value)]` on by default [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 69 - let _write_event_a = command_queue.write_buffer(&mem_a, &vec_a, None).unwrap(); [INFO] [stdout] 69 + command_queue.write_buffer(&mem_a, &vec_a, None).unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this let-binding has unit value [INFO] [stdout] --> examples/simple_add/main.rs:72:9 [INFO] [stdout] | [INFO] [stdout] 72 | let _write_event_b = command_queue.write_buffer(&mem_b, &vec_b, None).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 72 - let _write_event_b = command_queue.write_buffer(&mem_b, &vec_b, None).unwrap(); [INFO] [stdout] 72 + command_queue.write_buffer(&mem_b, &vec_b, None).unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/device.rs:12:29 [INFO] [stdout] | [INFO] [stdout] 12 | devices.into_iter().map(|d| Device::new(d)).collect() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Device::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/device.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 54 | &*self.inner [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&self.inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> examples/simple_add/main.rs:123:5 [INFO] [stdout] | [INFO] [stdout] 123 | return st; [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] 123 - return st; [INFO] [stdout] 123 + st [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/device.rs:122:17 [INFO] [stdout] | [INFO] [stdout] 122 | assert!(devices.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!devices.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] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> examples/simple_add/main.rs:119:21 [INFO] [stdout] | [INFO] [stdout] 119 | st.push_str(&*i.to_string()) [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `&i.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> examples/simple_add/main.rs:122:5 [INFO] [stdout] | [INFO] [stdout] 122 | st.push_str("]"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `st.push(']')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> src/kernel.rs:30:38 [INFO] [stdout] | [INFO] [stdout] 30 | inner: ManuallyDrop::new(Arc::new(RwLock::new(inner_clone))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc>>` is not `Send` and `Sync` as `RwLock>` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `RwLock>` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unsafe function's docs are missing a `# Safety` section [INFO] [stdout] --> src/kernel.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | pub unsafe fn new(kernel: ClKernel, program: Program) -> Kernel { [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] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> src/kernel.rs:41:38 [INFO] [stdout] | [INFO] [stdout] 41 | inner: ManuallyDrop::new(Arc::new(RwLock::new(kernel))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc>>` is not `Send` and `Sync` as `RwLock>` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `RwLock>` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unsafe function's docs are missing a `# Safety` section [INFO] [stdout] --> src/kernel.rs:51:5 [INFO] [stdout] | [INFO] [stdout] 51 | / pub unsafe fn set_arg(&self, arg_index: usize, arg: &mut T) -> Output<()> [INFO] [stdout] 52 | | where [INFO] [stdout] 53 | | T: KernelArg, [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] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/kernel.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | &*self.program [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&self.program` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/platform.rs:60:64 [INFO] [stdout] | [INFO] [stdout] 60 | ll::list_platforms().map(|plats| plats.into_iter().map(|p| Platform::new(p)).collect()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Platform::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/platform.rs:113:17 [INFO] [stdout] | [INFO] [stdout] 113 | assert!(platforms.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!platforms.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] [INFO] [stdout] [INFO] [stdout] warning: unsafe function's docs are missing a `# Safety` section [INFO] [stdout] --> src/program.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | pub unsafe fn new(program: ClProgram, context: ClContext) -> UnbuiltProgram { [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] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/program.rs:92:22 [INFO] [stdout] | [INFO] [stdout] 92 | .map(|d| Device::new(d)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Device::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unsafe function's docs are missing a `# Safety` section [INFO] [stdout] --> src/program.rs:125:5 [INFO] [stdout] | [INFO] [stdout] 125 | pub unsafe fn new(object: ClProgram, context: Context, devices: Vec) -> Program { [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] [INFO] [stdout] [INFO] [stdout] warning: unsafe function's docs are missing a `# Safety` section [INFO] [stdout] --> src/program.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 134 | pub unsafe fn from_low_level_program(program: &ClProgram) -> Output { [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] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/program.rs:137:53 [INFO] [stdout] | [INFO] [stdout] 137 | let hl_devices = ll_devices.into_iter().map(|d| Device::new(d)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Device::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/program.rs:250:17 [INFO] [stdout] | [INFO] [stdout] 250 | assert!(devices.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!devices.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] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> src/session.rs:51:47 [INFO] [stdout] | [INFO] [stdout] 51 | _queue: ManuallyDrop::new(Arc::new(RwLock::new(queue))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc>>` is not `Send` and `Sync` as `RwLock>` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `RwLock>` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/session.rs:65:62 [INFO] [stdout] | [INFO] [stdout] 65 | .map(|ll_devices| ll_devices.into_iter().map(|d| Device::new(d)).collect())?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Device::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/session.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | &*self._device [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&self._device` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> src/session.rs:114:39 [INFO] [stdout] | [INFO] [stdout] 114 | _queue: ManuallyDrop::new(Arc::new(RwLock::new(copied_queue))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc>>` is not `Send` and `Sync` as `RwLock>` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `RwLock>` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/session.rs:173:53 [INFO] [stdout] | [INFO] [stdout] 173 | let event: ClEvent = queue.write_buffer(&mut (*buffer_lock), host_buffer, opts)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&mut buffer_lock` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/session.rs:193:35 [INFO] [stdout] | [INFO] [stdout] 193 | queue.read_buffer(&(*buffer_lock), host_buffer, opts)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `&buffer_lock` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/session.rs:213:46 [INFO] [stdout] | [INFO] [stdout] 213 | let event = queue.enqueue_kernel(&mut (*kernel_lock), work, opts)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&mut kernel_lock` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/session.rs:233:41 [INFO] [stdout] | [INFO] [stdout] 233 | KernelOpArg::Buffer(ref buffer) => { [INFO] [stdout] | ^^^^^^^^^^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 233 - KernelOpArg::Buffer(ref buffer) => { [INFO] [stdout] 233 + KernelOpArg::Buffer(buffer) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this let-binding has unit value [INFO] [stdout] --> src/tests/mod.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | / let _write_event = queue [INFO] [stdout] 76 | | .write_buffer(&buffer, &initial_values[..], None) [INFO] [stdout] 77 | | .unwrap(); [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] = note: `#[warn(clippy::let_unit_value)]` on by default [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 75 - let _write_event = queue [INFO] [stdout] 75 + queue [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/context.rs:120:23 [INFO] [stdout] | [INFO] [stdout] 120 | let devices = vec![device]; [INFO] [stdout] | ^^^^^^^^^^^^ help: you can use an array directly: `[device]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/tests/mod.rs:10:23 [INFO] [stdout] | [INFO] [stdout] 10 | let devices = vec![device.clone()]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[device.clone()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/tests/mod.rs:26:23 [INFO] [stdout] | [INFO] [stdout] 26 | let devices = vec![device.clone()]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[device.clone()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/tests/mod.rs:68:23 [INFO] [stdout] | [INFO] [stdout] 68 | let devices = vec![device.clone()]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[device.clone()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/tests/mod.rs:72:30 [INFO] [stdout] | [INFO] [stdout] 72 | let initial_values = vec![1i32]; [INFO] [stdout] | ^^^^^^^^^^ help: you can use an array directly: `[1i32]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/tests/mod.rs:92:26 [INFO] [stdout] | [INFO] [stdout] 92 | let mut result = vec![0i32]; [INFO] [stdout] | ^^^^^^^^^^ help: you can use an array directly: `[0i32]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/buffer.rs:127:22 [INFO] [stdout] | [INFO] [stdout] 127 | pub fn read_lock(&self) -> RwLockReadGuard { [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] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 127 | pub fn read_lock(&self) -> RwLockReadGuard<'_, ClMem> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/buffer.rs:131:23 [INFO] [stdout] | [INFO] [stdout] 131 | pub fn write_lock(&self) -> RwLockWriteGuard { [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] 131 | pub fn write_lock(&self) -> RwLockWriteGuard<'_, ClMem> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/command_queue.rs:16:26 [INFO] [stdout] | [INFO] [stdout] 16 | unsafe fn write_lock(&self) -> RwLockWriteGuard

; [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] 16 | unsafe fn write_lock(&self) -> RwLockWriteGuard<'_, P>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/command_queue.rs:17:25 [INFO] [stdout] | [INFO] [stdout] 17 | unsafe fn read_lock(&self) -> RwLockReadGuard

; [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] 17 | unsafe fn read_lock(&self) -> RwLockReadGuard<'_, P>; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/command_queue.rs:37:25 [INFO] [stdout] | [INFO] [stdout] 37 | unsafe fn read_lock(&self) -> RwLockReadGuard { [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] 37 | unsafe fn read_lock(&self) -> RwLockReadGuard<'_, ClCommandQueue> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/command_queue.rs:40:26 [INFO] [stdout] | [INFO] [stdout] 40 | unsafe fn write_lock(&self) -> RwLockWriteGuard { [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] 40 | unsafe fn write_lock(&self) -> RwLockWriteGuard<'_, ClCommandQueue> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/kernel.rs:82:22 [INFO] [stdout] | [INFO] [stdout] 82 | pub fn read_lock(&self) -> RwLockReadGuard { [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] 82 | pub fn read_lock(&self) -> RwLockReadGuard<'_, ClKernel> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/kernel.rs:86:23 [INFO] [stdout] | [INFO] [stdout] 86 | pub fn write_lock(&self) -> RwLockWriteGuard { [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] 86 | pub fn write_lock(&self) -> RwLockWriteGuard<'_, ClKernel> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/kernel.rs:145:22 [INFO] [stdout] | [INFO] [stdout] 145 | pub fn new(name: &str) -> KernelOperation { [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] 145 | pub fn new(name: &str) -> KernelOperation<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/kernel.rs:163:17 [INFO] [stdout] | [INFO] [stdout] 163 | pub fn args(&self) -> &[KernelOpArg] { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^ [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] 163 | pub fn args(&self) -> &[KernelOpArg<'_, T>] { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/session.rs:83:23 [INFO] [stdout] | [INFO] [stdout] 83 | pub fn read_queue(&self) -> RwLockReadGuard { [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] 83 | pub fn read_queue(&self) -> RwLockReadGuard<'_, ClCommandQueue> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/session.rs:87:24 [INFO] [stdout] | [INFO] [stdout] 87 | pub fn write_queue(&self) -> RwLockWriteGuard { [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] 87 | pub fn write_queue(&self) -> RwLockWriteGuard<'_, ClCommandQueue> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 25.65s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: cexpr v0.3.6, nom v4.2.3 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1` [INFO] running `Command { std: "docker" "inspect" "79c170bfcf5358658968015d4a4ea65e69d7de1d36ed1b939e1842f492fc6d88", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "79c170bfcf5358658968015d4a4ea65e69d7de1d36ed1b939e1842f492fc6d88", kill_on_drop: false }` [INFO] [stdout] 79c170bfcf5358658968015d4a4ea65e69d7de1d36ed1b939e1842f492fc6d88