[INFO] cloning repository https://github.com/opentok-rust/opentok-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/opentok-rust/opentok-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fopentok-rust%2Fopentok-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fopentok-rust%2Fopentok-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f50a6c68d8cf9d19d1115fff5cd276cc1c6f2426
[INFO] checking opentok-rust/opentok-rs against 52995a223f2919dd3e2e427231db90a257350ded for pr-129249-4
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fopentok-rust%2Fopentok-rs" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/opentok-rust/opentok-rs
[INFO] finished tweaking git repo https://github.com/opentok-rust/opentok-rs
[INFO] tweaked toml for git repo https://github.com/opentok-rust/opentok-rs written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/opentok-rust/opentok-rs on toolchain 52995a223f2919dd3e2e427231db90a257350ded
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/opentok-rust/opentok-rs 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" "+52995a223f2919dd3e2e427231db90a257350ded" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] de57c52eae38399ad03b1d6470087dfd35fbed49df3af12d635e5830fa854279
[INFO] running `Command { std: "docker" "start" "de57c52eae38399ad03b1d6470087dfd35fbed49df3af12d635e5830fa854279", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "de57c52eae38399ad03b1d6470087dfd35fbed49df3af12d635e5830fa854279", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "de57c52eae38399ad03b1d6470087dfd35fbed49df3af12d635e5830fa854279" "/opt/rustwide/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "de57c52eae38399ad03b1d6470087dfd35fbed49df3af12d635e5830fa854279", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "de57c52eae38399ad03b1d6470087dfd35fbed49df3af12d635e5830fa854279" "/opt/rustwide/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling toml_parser v1.0.6+spec-1.1.0
[INFO] [stderr]    Compiling target-lexicon v0.13.2
[INFO] [stderr]    Compiling serde_spanned v1.0.4
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling find-msvc-tools v0.1.8
[INFO] [stderr]    Compiling generic-array v0.14.9
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]    Compiling cc v1.2.54
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling toml v0.9.11+spec-1.1.0
[INFO] [stderr]     Checking num-traits v0.2.19
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]     Checking subtle v2.4.1
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling cfg-expr v0.18.0
[INFO] [stderr]    Compiling zerocopy v0.8.34
[INFO] [stderr]     Checking value-bag v1.12.0
[INFO] [stderr]    Compiling system-deps v7.0.7
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking log v0.4.29
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]    Compiling standback v0.2.17
[INFO] [stderr]    Compiling proc-macro-hack v0.5.20+deprecated
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling libnghttp2-sys v0.1.11+1.64.0
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling libz-sys v1.1.23
[INFO] [stderr]    Compiling glib-sys v0.21.5
[INFO] [stderr]    Compiling gobject-sys v0.21.5
[INFO] [stderr]    Compiling gstreamer-sys v0.24.4
[INFO] [stderr]    Compiling curl-sys v0.4.85+curl-8.18.0
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking futures-lite v2.6.1
[INFO] [stderr]     Checking cipher v0.2.5
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling getrandom v0.1.16
[INFO] [stderr]    Compiling clang-sys v1.8.1
[INFO] [stderr]    Compiling toml_edit v0.23.10+spec-1.0.0
[INFO] [stderr]    Compiling gio-sys v0.21.5
[INFO] [stderr]    Compiling gstreamer-base-sys v0.24.4
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking universal-hash v0.4.1
[INFO] [stderr]     Checking digest v0.9.0
[INFO] [stderr]    Compiling nom v5.1.3
[INFO] [stderr]     Checking cpuid-bool v0.2.0
[INFO] [stderr]     Checking event-listener v2.5.3
[INFO] [stderr]    Compiling regex-syntax v0.8.8
[INFO] [stderr]    Compiling const_fn v0.4.11
[INFO] [stderr]    Compiling zmij v1.0.17
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking async-channel v1.9.0
[INFO] [stderr]     Checking piper v0.2.4
[INFO] [stderr]     Checking polyval v0.4.5
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling proc-macro-crate v3.4.0
[INFO] [stderr]     Checking aes-soft v0.6.4
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]    Compiling atty v0.2.14
[INFO] [stderr]    Compiling wasm-bindgen-shared v0.2.108
[INFO] [stderr]     Checking crypto-mac v0.10.1
[INFO] [stderr]    Compiling time v0.2.27
[INFO] [stderr]    Compiling unicode-width v0.1.14
[INFO] [stderr]     Checking base64 v0.13.1
[INFO] [stderr]    Compiling textwrap v0.11.0
[INFO] [stderr]    Compiling libloading v0.8.9
[INFO] [stderr]     Checking hmac v0.10.1
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]     Checking aes v0.6.0
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]    Compiling wasm-bindgen v0.2.108
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling wasm-bindgen-macro-support v0.2.108
[INFO] [stderr]     Checking ghash v0.3.1
[INFO] [stderr]    Compiling time-macros-impl v0.1.2
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]     Checking time-macros v0.1.1
[INFO] [stderr]     Checking async-executor v1.13.3
[INFO] [stderr]     Checking ctr v0.6.0
[INFO] [stderr]     Checking async-lock v3.4.1
[INFO] [stderr]     Checking aead v0.3.2
[INFO] [stderr]     Checking block-buffer v0.9.0
[INFO] [stderr]    Compiling cookie v0.14.4
[INFO] [stderr]    Compiling pastey v0.2.1
[INFO] [stderr]     Checking waker-fn v1.2.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking async-io v2.6.0
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling glib-macros v0.21.5
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking unicode-ident v1.0.22
[INFO] [stderr]    Compiling strsim v0.8.0
[INFO] [stderr]     Checking fastrand v1.9.0
[INFO] [stderr]    Compiling bindgen v0.58.1
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]    Compiling vec_map v0.8.2
[INFO] [stderr]    Compiling bitflags v1.3.2
[INFO] [stderr]    Compiling humantime v2.3.0
[INFO] [stderr]    Compiling ansi_term v0.12.1
[INFO] [stderr]    Compiling curl v0.4.49
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]    Compiling env_logger v0.8.4
[INFO] [stderr]    Compiling clap v2.34.0
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking kstring v2.0.2
[INFO] [stderr]     Checking sha2 v0.9.9
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]     Checking futures-lite v1.13.0
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]     Checking async-global-executor v2.4.1
[INFO] [stderr]    Compiling wasm-bindgen-macro v0.2.108
[INFO] [stderr]    Compiling cexpr v0.4.0
[INFO] [stderr]     Checking option-operations v0.6.1
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking aes-gcm v0.8.0
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]    Compiling async-attributes v1.1.2
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]     Checking hkdf v0.10.0
[INFO] [stderr]     Checking spinning_top v0.2.5
[INFO] [stderr]    Compiling which v3.1.1
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking kv-log-macro v1.0.7
[INFO] [stderr]     Checking socket2 v0.6.2
[INFO] [stderr]     Checking ryu v1.0.22
[INFO] [stderr]    Compiling peeking_take_while v0.1.2
[INFO] [stderr]    Compiling http-types v2.12.0
[INFO] [stderr]     Checking muldiv v1.0.1
[INFO] [stderr]     Checking glib v0.21.5
[INFO] [stderr]     Checking bytes v1.11.0
[INFO] [stderr]    Compiling isahc v0.9.14
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking async-std v1.13.2
[INFO] [stderr]     Checking flume v0.9.2
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]     Checking serde_qs v0.8.5
[INFO] [stderr]     Checking tracing-futures v0.2.5
[INFO] [stderr]     Checking sluice v0.5.5
[INFO] [stderr]    Compiling gstreamer-video-sys v0.24.4
[INFO] [stderr]    Compiling gstreamer-app-sys v0.24.4
[INFO] [stderr]     Checking bytes v0.5.6
[INFO] [stderr]     Checking atomic_refcell v0.1.13
[INFO] [stderr]     Checking infer v0.2.3
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]     Checking js-sys v0.3.85
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]     Checking byte-slice-cast v1.2.3
[INFO] [stderr]     Checking os_str_bytes v6.6.1
[INFO] [stderr]     Checking clap_lex v0.2.4
[INFO] [stderr]     Checking textwrap v0.16.2
[INFO] [stderr]     Checking strsim v0.10.0
[INFO] [stderr]     Checking linked-hash-map v0.5.6
[INFO] [stderr]     Checking clap v3.2.25
[INFO] [stderr]     Checking yaml-rust v0.4.5
[INFO] [stderr]     Checking json v0.12.4
[INFO] [stderr]     Checking http-client v6.5.3
[INFO] [stderr]    Compiling num-bigint v0.2.6
[INFO] [stderr]    Compiling ring v0.16.20
[INFO] [stderr]     Checking chrono v0.4.43
[INFO] [stderr]     Checking pem v0.8.3
[INFO] [stderr]     Checking base64 v0.12.3
[INFO] [stderr]     Checking web-sys v0.3.85
[INFO] [stderr]     Checking clap-serde v0.3.0
[INFO] [stderr]     Checking surf v2.3.2
[INFO] [stderr]    Compiling cargo-husky v1.5.0
[INFO] [stderr]     Checking simple_asn1 v0.4.1
[INFO] [stderr]     Checking sha1 v0.2.0
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking rustc-serialize v0.3.25
[INFO] [stderr]     Checking hmac-sha1 v0.1.3
[INFO] [stderr]     Checking derive_more v2.1.1
[INFO] [stderr]    Compiling opentok-rs-sys v1.0.5 (/opt/rustwide/workdir/opentok-sys)
[INFO] [stderr]     Checking gstreamer v0.24.4
[INFO] [stderr]     Checking jsonwebtoken v7.2.0
[INFO] [stderr]     Checking opentok-server v0.1.3 (https://github.com/opentok-rust/opentok-server-rs?branch=main#f36a87f8)
[INFO] [stderr]     Checking gstreamer-base v0.24.4
[INFO] [stderr]     Checking gstreamer-app v0.24.4
[INFO] [stderr]     Checking gstreamer-video v0.24.4
[INFO] [stderr]     Checking opentok v1.0.5 (/opt/rustwide/workdir/opentok)
[INFO] [stdout] error: useless conversion to the same type: `*const otc_stream`
[INFO] [stdout]   --> opentok/src/macros.rs:15:37
[INFO] [stdout]    |
[INFO] [stdout]  1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout] 15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]    |                                       ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: opentok/src/publisher.rs:88:1
[INFO] [stdout]    |
[INFO] [stdout] 88 | / ffi_callback!(
[INFO] [stdout] 89 | |     on_stream_created,
[INFO] [stdout] 90 | |     *mut ffi::otc_publisher,
[INFO] [stdout] 91 | |     Publisher,
[INFO] [stdout] 92 | |     *const ffi::otc_stream
[INFO] [stdout] 93 | | );
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<*const otc_stream as Into<*const otc_stream>::into(val) to avoid triggering this lint
[INFO] [stdout]    = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_stream`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/publisher.rs:95:1
[INFO] [stdout]     |
[INFO] [stdout]  95 | / ffi_callback!(
[INFO] [stdout]  96 | |     on_stream_destroyed,
[INFO] [stdout]  97 | |     *mut ffi::otc_publisher,
[INFO] [stdout]  98 | |     Publisher,
[INFO] [stdout]  99 | |     *const ffi::otc_stream
[INFO] [stdout] 100 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_stream as Into<*const otc_stream>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_video_frame`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/publisher.rs:102:1
[INFO] [stdout]     |
[INFO] [stdout] 102 | / ffi_callback!(
[INFO] [stdout] 103 | |     on_render_frame,
[INFO] [stdout] 104 | |     *mut ffi::otc_publisher,
[INFO] [stdout] 105 | |     Publisher,
[INFO] [stdout] 106 | |     *const ffi::otc_video_frame
[INFO] [stdout] 107 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_video_frame as Into<*const otc_video_frame>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `f32`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/publisher.rs:109:1
[INFO] [stdout]     |
[INFO] [stdout] 109 | / ffi_callback!(
[INFO] [stdout] 110 | |     on_audio_level_updated,
[INFO] [stdout] 111 | |     *mut ffi::otc_publisher,
[INFO] [stdout] 112 | |     Publisher,
[INFO] [stdout] 113 | |     f32
[INFO] [stdout] 114 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<f32 as Into<f32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const i8`
[INFO] [stdout]    --> opentok/src/macros.rs:29:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/publisher.rs:134:1
[INFO] [stdout]     |
[INFO] [stdout] 134 | / ffi_callback!(
[INFO] [stdout] 135 | |     on_error,
[INFO] [stdout] 136 | |     *mut ffi::otc_publisher,
[INFO] [stdout] 137 | |     Publisher,
[INFO] [stdout] 138 | |     *const c_char,
[INFO] [stdout] 139 | |     ffi::otc_publisher_error_code
[INFO] [stdout] 140 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const i8 as Into<*const i8>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u32`
[INFO] [stdout]    --> opentok/src/macros.rs:29:50
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/publisher.rs:134:1
[INFO] [stdout]     |
[INFO] [stdout] 134 | / ffi_callback!(
[INFO] [stdout] 135 | |     on_error,
[INFO] [stdout] 136 | |     *mut ffi::otc_publisher,
[INFO] [stdout] 137 | |     Publisher,
[INFO] [stdout] 138 | |     *const c_char,
[INFO] [stdout] 139 | |     ffi::otc_publisher_error_code
[INFO] [stdout] 140 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<u32 as Into<u32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_connection`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:134:1
[INFO] [stdout]     |
[INFO] [stdout] 134 | / ffi_callback!(
[INFO] [stdout] 135 | |     on_connection_created,
[INFO] [stdout] 136 | |     *mut ffi::otc_session,
[INFO] [stdout] 137 | |     Session,
[INFO] [stdout] 138 | |     *const ffi::otc_connection
[INFO] [stdout] 139 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_connection as Into<*const otc_connection>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_connection`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:140:1
[INFO] [stdout]     |
[INFO] [stdout] 140 | / ffi_callback!(
[INFO] [stdout] 141 | |     on_connection_dropped,
[INFO] [stdout] 142 | |     *mut ffi::otc_session,
[INFO] [stdout] 143 | |     Session,
[INFO] [stdout] 144 | |     *const ffi::otc_connection
[INFO] [stdout] 145 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_connection as Into<*const otc_connection>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_stream`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:146:1
[INFO] [stdout]     |
[INFO] [stdout] 146 | / ffi_callback!(
[INFO] [stdout] 147 | |     on_stream_received,
[INFO] [stdout] 148 | |     *mut ffi::otc_session,
[INFO] [stdout] 149 | |     Session,
[INFO] [stdout] 150 | |     *const ffi::otc_stream
[INFO] [stdout] 151 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_stream as Into<*const otc_stream>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_stream`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:152:1
[INFO] [stdout]     |
[INFO] [stdout] 152 | / ffi_callback!(
[INFO] [stdout] 153 | |     on_stream_dropped,
[INFO] [stdout] 154 | |     *mut ffi::otc_session,
[INFO] [stdout] 155 | |     Session,
[INFO] [stdout] 156 | |     *const ffi::otc_stream
[INFO] [stdout] 157 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_stream as Into<*const otc_stream>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_stream`
[INFO] [stdout]    --> opentok/src/macros.rs:29:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:158:1
[INFO] [stdout]     |
[INFO] [stdout] 158 | / ffi_callback!(
[INFO] [stdout] 159 | |     on_stream_has_audio_changed,
[INFO] [stdout] 160 | |     *mut ffi::otc_session,
[INFO] [stdout] 161 | |     Session,
[INFO] [stdout] 162 | |     *const ffi::otc_stream,
[INFO] [stdout] 163 | |     ffi::otc_bool
[INFO] [stdout] 164 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_stream as Into<*const otc_stream>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `i32`
[INFO] [stdout]    --> opentok/src/macros.rs:29:50
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:158:1
[INFO] [stdout]     |
[INFO] [stdout] 158 | / ffi_callback!(
[INFO] [stdout] 159 | |     on_stream_has_audio_changed,
[INFO] [stdout] 160 | |     *mut ffi::otc_session,
[INFO] [stdout] 161 | |     Session,
[INFO] [stdout] 162 | |     *const ffi::otc_stream,
[INFO] [stdout] 163 | |     ffi::otc_bool
[INFO] [stdout] 164 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<i32 as Into<i32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_stream`
[INFO] [stdout]    --> opentok/src/macros.rs:29:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:165:1
[INFO] [stdout]     |
[INFO] [stdout] 165 | / ffi_callback!(
[INFO] [stdout] 166 | |     on_stream_has_video_changed,
[INFO] [stdout] 167 | |     *mut ffi::otc_session,
[INFO] [stdout] 168 | |     Session,
[INFO] [stdout] 169 | |     *const ffi::otc_stream,
[INFO] [stdout] 170 | |     ffi::otc_bool
[INFO] [stdout] 171 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_stream as Into<*const otc_stream>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `i32`
[INFO] [stdout]    --> opentok/src/macros.rs:29:50
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:165:1
[INFO] [stdout]     |
[INFO] [stdout] 165 | / ffi_callback!(
[INFO] [stdout] 166 | |     on_stream_has_video_changed,
[INFO] [stdout] 167 | |     *mut ffi::otc_session,
[INFO] [stdout] 168 | |     Session,
[INFO] [stdout] 169 | |     *const ffi::otc_stream,
[INFO] [stdout] 170 | |     ffi::otc_bool
[INFO] [stdout] 171 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<i32 as Into<i32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_stream`
[INFO] [stdout]    --> opentok/src/macros.rs:44:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  44 |                       target.$fn_name(arg1.into(), arg2.into(), arg3.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:172:1
[INFO] [stdout]     |
[INFO] [stdout] 172 | / ffi_callback!(
[INFO] [stdout] 173 | |     on_stream_video_dimensions_changed,
[INFO] [stdout] 174 | |     *mut ffi::otc_session,
[INFO] [stdout] 175 | |     Session,
[INFO] [stdout] ...   |
[INFO] [stdout] 178 | |     i32
[INFO] [stdout] 179 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_stream as Into<*const otc_stream>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `i32`
[INFO] [stdout]    --> opentok/src/macros.rs:44:50
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  44 |                       target.$fn_name(arg1.into(), arg2.into(), arg3.into());
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:172:1
[INFO] [stdout]     |
[INFO] [stdout] 172 | / ffi_callback!(
[INFO] [stdout] 173 | |     on_stream_video_dimensions_changed,
[INFO] [stdout] 174 | |     *mut ffi::otc_session,
[INFO] [stdout] 175 | |     Session,
[INFO] [stdout] ...   |
[INFO] [stdout] 178 | |     i32
[INFO] [stdout] 179 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<i32 as Into<i32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `i32`
[INFO] [stdout]    --> opentok/src/macros.rs:44:63
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  44 |                       target.$fn_name(arg1.into(), arg2.into(), arg3.into());
[INFO] [stdout]     |                                                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:172:1
[INFO] [stdout]     |
[INFO] [stdout] 172 | / ffi_callback!(
[INFO] [stdout] 173 | |     on_stream_video_dimensions_changed,
[INFO] [stdout] 174 | |     *mut ffi::otc_session,
[INFO] [stdout] 175 | |     Session,
[INFO] [stdout] ...   |
[INFO] [stdout] 178 | |     i32
[INFO] [stdout] 179 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<i32 as Into<i32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_stream`
[INFO] [stdout]    --> opentok/src/macros.rs:29:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:180:1
[INFO] [stdout]     |
[INFO] [stdout] 180 | / ffi_callback!(
[INFO] [stdout] 181 | |     on_stream_video_type_changed,
[INFO] [stdout] 182 | |     *mut ffi::otc_session,
[INFO] [stdout] 183 | |     Session,
[INFO] [stdout] 184 | |     *const ffi::otc_stream,
[INFO] [stdout] 185 | |     ffi::otc_stream_video_type
[INFO] [stdout] 186 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_stream as Into<*const otc_stream>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u32`
[INFO] [stdout]    --> opentok/src/macros.rs:29:50
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:180:1
[INFO] [stdout]     |
[INFO] [stdout] 180 | / ffi_callback!(
[INFO] [stdout] 181 | |     on_stream_video_type_changed,
[INFO] [stdout] 182 | |     *mut ffi::otc_session,
[INFO] [stdout] 183 | |     Session,
[INFO] [stdout] 184 | |     *const ffi::otc_stream,
[INFO] [stdout] 185 | |     ffi::otc_stream_video_type
[INFO] [stdout] 186 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<u32 as Into<u32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const i8`
[INFO] [stdout]    --> opentok/src/macros.rs:44:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  44 |                       target.$fn_name(arg1.into(), arg2.into(), arg3.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:187:1
[INFO] [stdout]     |
[INFO] [stdout] 187 | / ffi_callback!(
[INFO] [stdout] 188 | |     on_signal_received,
[INFO] [stdout] 189 | |     *mut ffi::otc_session,
[INFO] [stdout] 190 | |     Session,
[INFO] [stdout] ...   |
[INFO] [stdout] 193 | |     *const ffi::otc_connection
[INFO] [stdout] 194 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const i8 as Into<*const i8>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const i8`
[INFO] [stdout]    --> opentok/src/macros.rs:44:50
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  44 |                       target.$fn_name(arg1.into(), arg2.into(), arg3.into());
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:187:1
[INFO] [stdout]     |
[INFO] [stdout] 187 | / ffi_callback!(
[INFO] [stdout] 188 | |     on_signal_received,
[INFO] [stdout] 189 | |     *mut ffi::otc_session,
[INFO] [stdout] 190 | |     Session,
[INFO] [stdout] ...   |
[INFO] [stdout] 193 | |     *const ffi::otc_connection
[INFO] [stdout] 194 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const i8 as Into<*const i8>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_connection`
[INFO] [stdout]    --> opentok/src/macros.rs:44:63
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  44 |                       target.$fn_name(arg1.into(), arg2.into(), arg3.into());
[INFO] [stdout]     |                                                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:187:1
[INFO] [stdout]     |
[INFO] [stdout] 187 | / ffi_callback!(
[INFO] [stdout] 188 | |     on_signal_received,
[INFO] [stdout] 189 | |     *mut ffi::otc_session,
[INFO] [stdout] 190 | |     Session,
[INFO] [stdout] ...   |
[INFO] [stdout] 193 | |     *const ffi::otc_connection
[INFO] [stdout] 194 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_connection as Into<*const otc_connection>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const i8`
[INFO] [stdout]    --> opentok/src/macros.rs:29:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:195:1
[INFO] [stdout]     |
[INFO] [stdout] 195 | / ffi_callback!(
[INFO] [stdout] 196 | |     on_archive_started,
[INFO] [stdout] 197 | |     *mut ffi::otc_session,
[INFO] [stdout] 198 | |     Session,
[INFO] [stdout] 199 | |     *const c_char,
[INFO] [stdout] 200 | |     *const c_char
[INFO] [stdout] 201 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const i8 as Into<*const i8>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const i8`
[INFO] [stdout]    --> opentok/src/macros.rs:29:50
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:195:1
[INFO] [stdout]     |
[INFO] [stdout] 195 | / ffi_callback!(
[INFO] [stdout] 196 | |     on_archive_started,
[INFO] [stdout] 197 | |     *mut ffi::otc_session,
[INFO] [stdout] 198 | |     Session,
[INFO] [stdout] 199 | |     *const c_char,
[INFO] [stdout] 200 | |     *const c_char
[INFO] [stdout] 201 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const i8 as Into<*const i8>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const i8`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:202:1
[INFO] [stdout]     |
[INFO] [stdout] 202 | / ffi_callback!(
[INFO] [stdout] 203 | |     on_archive_stopped,
[INFO] [stdout] 204 | |     *mut ffi::otc_session,
[INFO] [stdout] 205 | |     Session,
[INFO] [stdout] 206 | |     *const c_char
[INFO] [stdout] 207 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const i8 as Into<*const i8>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const i8`
[INFO] [stdout]    --> opentok/src/macros.rs:29:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:208:1
[INFO] [stdout]     |
[INFO] [stdout] 208 | / ffi_callback!(
[INFO] [stdout] 209 | |     on_error,
[INFO] [stdout] 210 | |     *mut ffi::otc_session,
[INFO] [stdout] 211 | |     Session,
[INFO] [stdout] 212 | |     *const c_char,
[INFO] [stdout] 213 | |     ffi::otc_session_error_code
[INFO] [stdout] 214 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const i8 as Into<*const i8>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u32`
[INFO] [stdout]    --> opentok/src/macros.rs:29:50
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:208:1
[INFO] [stdout]     |
[INFO] [stdout] 208 | / ffi_callback!(
[INFO] [stdout] 209 | |     on_error,
[INFO] [stdout] 210 | |     *mut ffi::otc_session,
[INFO] [stdout] 211 | |     Session,
[INFO] [stdout] 212 | |     *const c_char,
[INFO] [stdout] 213 | |     ffi::otc_session_error_code
[INFO] [stdout] 214 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<u32 as Into<u32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_stream`
[INFO] [stdout]   --> opentok/src/macros.rs:15:37
[INFO] [stdout]    |
[INFO] [stdout]  1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout] 15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]    |                                       ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: opentok/src/subscriber.rs:85:1
[INFO] [stdout]    |
[INFO] [stdout] 85 | / ffi_callback!(
[INFO] [stdout] 86 | |     on_connected,
[INFO] [stdout] 87 | |     *mut ffi::otc_subscriber,
[INFO] [stdout] 88 | |     Subscriber,
[INFO] [stdout] 89 | |     *const ffi::otc_stream
[INFO] [stdout] 90 | | );
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<*const otc_stream as Into<*const otc_stream>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_video_frame`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/subscriber.rs:96:1
[INFO] [stdout]     |
[INFO] [stdout]  96 | / ffi_callback!(
[INFO] [stdout]  97 | |     on_render_frame,
[INFO] [stdout]  98 | |     *mut ffi::otc_subscriber,
[INFO] [stdout]  99 | |     Subscriber,
[INFO] [stdout] 100 | |     *const ffi::otc_video_frame
[INFO] [stdout] 101 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_video_frame as Into<*const otc_video_frame>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u32`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/subscriber.rs:103:1
[INFO] [stdout]     |
[INFO] [stdout] 103 | / ffi_callback!(
[INFO] [stdout] 104 | |     on_video_disabled,
[INFO] [stdout] 105 | |     *mut ffi::otc_subscriber,
[INFO] [stdout] 106 | |     Subscriber,
[INFO] [stdout] 107 | |     ffi::otc_video_reason
[INFO] [stdout] 108 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<u32 as Into<u32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u32`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/subscriber.rs:110:1
[INFO] [stdout]     |
[INFO] [stdout] 110 | / ffi_callback!(
[INFO] [stdout] 111 | |     on_video_enabled,
[INFO] [stdout] 112 | |     *mut ffi::otc_subscriber,
[INFO] [stdout] 113 | |     Subscriber,
[INFO] [stdout] 114 | |     ffi::otc_video_reason
[INFO] [stdout] 115 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<u32 as Into<u32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `f32`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/subscriber.rs:135:1
[INFO] [stdout]     |
[INFO] [stdout] 135 | / ffi_callback!(
[INFO] [stdout] 136 | |     on_audio_level_updated,
[INFO] [stdout] 137 | |     *mut ffi::otc_subscriber,
[INFO] [stdout] 138 | |     Subscriber,
[INFO] [stdout] 139 | |     f32
[INFO] [stdout] 140 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<f32 as Into<f32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const i8`
[INFO] [stdout]    --> opentok/src/macros.rs:29:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/subscriber.rs:142:1
[INFO] [stdout]     |
[INFO] [stdout] 142 | / ffi_callback!(
[INFO] [stdout] 143 | |     on_error,
[INFO] [stdout] 144 | |     *mut ffi::otc_subscriber,
[INFO] [stdout] 145 | |     Subscriber,
[INFO] [stdout] 146 | |     *const c_char,
[INFO] [stdout] 147 | |     ffi::otc_subscriber_error_code
[INFO] [stdout] 148 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const i8 as Into<*const i8>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u32`
[INFO] [stdout]    --> opentok/src/macros.rs:29:50
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/subscriber.rs:142:1
[INFO] [stdout]     |
[INFO] [stdout] 142 | / ffi_callback!(
[INFO] [stdout] 143 | |     on_error,
[INFO] [stdout] 144 | |     *mut ffi::otc_subscriber,
[INFO] [stdout] 145 | |     Subscriber,
[INFO] [stdout] 146 | |     *const c_char,
[INFO] [stdout] 147 | |     ffi::otc_subscriber_error_code
[INFO] [stdout] 148 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<u32 as Into<u32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `opentok` (lib) due to 34 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error: useless conversion to the same type: `*const otc_stream`
[INFO] [stdout]   --> opentok/src/macros.rs:15:37
[INFO] [stdout]    |
[INFO] [stdout]  1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout] 15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]    |                                       ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: opentok/src/publisher.rs:88:1
[INFO] [stdout]    |
[INFO] [stdout] 88 | / ffi_callback!(
[INFO] [stdout] 89 | |     on_stream_created,
[INFO] [stdout] 90 | |     *mut ffi::otc_publisher,
[INFO] [stdout] 91 | |     Publisher,
[INFO] [stdout] 92 | |     *const ffi::otc_stream
[INFO] [stdout] 93 | | );
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<*const otc_stream as Into<*const otc_stream>::into(val) to avoid triggering this lint
[INFO] [stdout]    = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_stream`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/publisher.rs:95:1
[INFO] [stdout]     |
[INFO] [stdout]  95 | / ffi_callback!(
[INFO] [stdout]  96 | |     on_stream_destroyed,
[INFO] [stdout]  97 | |     *mut ffi::otc_publisher,
[INFO] [stdout]  98 | |     Publisher,
[INFO] [stdout]  99 | |     *const ffi::otc_stream
[INFO] [stdout] 100 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_stream as Into<*const otc_stream>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_video_frame`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/publisher.rs:102:1
[INFO] [stdout]     |
[INFO] [stdout] 102 | / ffi_callback!(
[INFO] [stdout] 103 | |     on_render_frame,
[INFO] [stdout] 104 | |     *mut ffi::otc_publisher,
[INFO] [stdout] 105 | |     Publisher,
[INFO] [stdout] 106 | |     *const ffi::otc_video_frame
[INFO] [stdout] 107 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_video_frame as Into<*const otc_video_frame>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `f32`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/publisher.rs:109:1
[INFO] [stdout]     |
[INFO] [stdout] 109 | / ffi_callback!(
[INFO] [stdout] 110 | |     on_audio_level_updated,
[INFO] [stdout] 111 | |     *mut ffi::otc_publisher,
[INFO] [stdout] 112 | |     Publisher,
[INFO] [stdout] 113 | |     f32
[INFO] [stdout] 114 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<f32 as Into<f32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const i8`
[INFO] [stdout]    --> opentok/src/macros.rs:29:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/publisher.rs:134:1
[INFO] [stdout]     |
[INFO] [stdout] 134 | / ffi_callback!(
[INFO] [stdout] 135 | |     on_error,
[INFO] [stdout] 136 | |     *mut ffi::otc_publisher,
[INFO] [stdout] 137 | |     Publisher,
[INFO] [stdout] 138 | |     *const c_char,
[INFO] [stdout] 139 | |     ffi::otc_publisher_error_code
[INFO] [stdout] 140 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const i8 as Into<*const i8>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u32`
[INFO] [stdout]    --> opentok/src/macros.rs:29:50
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/publisher.rs:134:1
[INFO] [stdout]     |
[INFO] [stdout] 134 | / ffi_callback!(
[INFO] [stdout] 135 | |     on_error,
[INFO] [stdout] 136 | |     *mut ffi::otc_publisher,
[INFO] [stdout] 137 | |     Publisher,
[INFO] [stdout] 138 | |     *const c_char,
[INFO] [stdout] 139 | |     ffi::otc_publisher_error_code
[INFO] [stdout] 140 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<u32 as Into<u32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_connection`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:134:1
[INFO] [stdout]     |
[INFO] [stdout] 134 | / ffi_callback!(
[INFO] [stdout] 135 | |     on_connection_created,
[INFO] [stdout] 136 | |     *mut ffi::otc_session,
[INFO] [stdout] 137 | |     Session,
[INFO] [stdout] 138 | |     *const ffi::otc_connection
[INFO] [stdout] 139 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_connection as Into<*const otc_connection>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_connection`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:140:1
[INFO] [stdout]     |
[INFO] [stdout] 140 | / ffi_callback!(
[INFO] [stdout] 141 | |     on_connection_dropped,
[INFO] [stdout] 142 | |     *mut ffi::otc_session,
[INFO] [stdout] 143 | |     Session,
[INFO] [stdout] 144 | |     *const ffi::otc_connection
[INFO] [stdout] 145 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_connection as Into<*const otc_connection>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_stream`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:146:1
[INFO] [stdout]     |
[INFO] [stdout] 146 | / ffi_callback!(
[INFO] [stdout] 147 | |     on_stream_received,
[INFO] [stdout] 148 | |     *mut ffi::otc_session,
[INFO] [stdout] 149 | |     Session,
[INFO] [stdout] 150 | |     *const ffi::otc_stream
[INFO] [stdout] 151 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_stream as Into<*const otc_stream>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_stream`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:152:1
[INFO] [stdout]     |
[INFO] [stdout] 152 | / ffi_callback!(
[INFO] [stdout] 153 | |     on_stream_dropped,
[INFO] [stdout] 154 | |     *mut ffi::otc_session,
[INFO] [stdout] 155 | |     Session,
[INFO] [stdout] 156 | |     *const ffi::otc_stream
[INFO] [stdout] 157 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_stream as Into<*const otc_stream>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_stream`
[INFO] [stdout]    --> opentok/src/macros.rs:29:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:158:1
[INFO] [stdout]     |
[INFO] [stdout] 158 | / ffi_callback!(
[INFO] [stdout] 159 | |     on_stream_has_audio_changed,
[INFO] [stdout] 160 | |     *mut ffi::otc_session,
[INFO] [stdout] 161 | |     Session,
[INFO] [stdout] 162 | |     *const ffi::otc_stream,
[INFO] [stdout] 163 | |     ffi::otc_bool
[INFO] [stdout] 164 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_stream as Into<*const otc_stream>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `i32`
[INFO] [stdout]    --> opentok/src/macros.rs:29:50
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:158:1
[INFO] [stdout]     |
[INFO] [stdout] 158 | / ffi_callback!(
[INFO] [stdout] 159 | |     on_stream_has_audio_changed,
[INFO] [stdout] 160 | |     *mut ffi::otc_session,
[INFO] [stdout] 161 | |     Session,
[INFO] [stdout] 162 | |     *const ffi::otc_stream,
[INFO] [stdout] 163 | |     ffi::otc_bool
[INFO] [stdout] 164 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<i32 as Into<i32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_stream`
[INFO] [stdout]    --> opentok/src/macros.rs:29:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:165:1
[INFO] [stdout]     |
[INFO] [stdout] 165 | / ffi_callback!(
[INFO] [stdout] 166 | |     on_stream_has_video_changed,
[INFO] [stdout] 167 | |     *mut ffi::otc_session,
[INFO] [stdout] 168 | |     Session,
[INFO] [stdout] 169 | |     *const ffi::otc_stream,
[INFO] [stdout] 170 | |     ffi::otc_bool
[INFO] [stdout] 171 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_stream as Into<*const otc_stream>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `i32`
[INFO] [stdout]    --> opentok/src/macros.rs:29:50
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:165:1
[INFO] [stdout]     |
[INFO] [stdout] 165 | / ffi_callback!(
[INFO] [stdout] 166 | |     on_stream_has_video_changed,
[INFO] [stdout] 167 | |     *mut ffi::otc_session,
[INFO] [stdout] 168 | |     Session,
[INFO] [stdout] 169 | |     *const ffi::otc_stream,
[INFO] [stdout] 170 | |     ffi::otc_bool
[INFO] [stdout] 171 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<i32 as Into<i32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_stream`
[INFO] [stdout]    --> opentok/src/macros.rs:44:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  44 |                       target.$fn_name(arg1.into(), arg2.into(), arg3.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:172:1
[INFO] [stdout]     |
[INFO] [stdout] 172 | / ffi_callback!(
[INFO] [stdout] 173 | |     on_stream_video_dimensions_changed,
[INFO] [stdout] 174 | |     *mut ffi::otc_session,
[INFO] [stdout] 175 | |     Session,
[INFO] [stdout] ...   |
[INFO] [stdout] 178 | |     i32
[INFO] [stdout] 179 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_stream as Into<*const otc_stream>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `i32`
[INFO] [stdout]    --> opentok/src/macros.rs:44:50
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  44 |                       target.$fn_name(arg1.into(), arg2.into(), arg3.into());
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:172:1
[INFO] [stdout]     |
[INFO] [stdout] 172 | / ffi_callback!(
[INFO] [stdout] 173 | |     on_stream_video_dimensions_changed,
[INFO] [stdout] 174 | |     *mut ffi::otc_session,
[INFO] [stdout] 175 | |     Session,
[INFO] [stdout] ...   |
[INFO] [stdout] 178 | |     i32
[INFO] [stdout] 179 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<i32 as Into<i32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `i32`
[INFO] [stdout]    --> opentok/src/macros.rs:44:63
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  44 |                       target.$fn_name(arg1.into(), arg2.into(), arg3.into());
[INFO] [stdout]     |                                                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:172:1
[INFO] [stdout]     |
[INFO] [stdout] 172 | / ffi_callback!(
[INFO] [stdout] 173 | |     on_stream_video_dimensions_changed,
[INFO] [stdout] 174 | |     *mut ffi::otc_session,
[INFO] [stdout] 175 | |     Session,
[INFO] [stdout] ...   |
[INFO] [stdout] 178 | |     i32
[INFO] [stdout] 179 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<i32 as Into<i32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_stream`
[INFO] [stdout]    --> opentok/src/macros.rs:29:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:180:1
[INFO] [stdout]     |
[INFO] [stdout] 180 | / ffi_callback!(
[INFO] [stdout] 181 | |     on_stream_video_type_changed,
[INFO] [stdout] 182 | |     *mut ffi::otc_session,
[INFO] [stdout] 183 | |     Session,
[INFO] [stdout] 184 | |     *const ffi::otc_stream,
[INFO] [stdout] 185 | |     ffi::otc_stream_video_type
[INFO] [stdout] 186 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_stream as Into<*const otc_stream>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u32`
[INFO] [stdout]    --> opentok/src/macros.rs:29:50
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:180:1
[INFO] [stdout]     |
[INFO] [stdout] 180 | / ffi_callback!(
[INFO] [stdout] 181 | |     on_stream_video_type_changed,
[INFO] [stdout] 182 | |     *mut ffi::otc_session,
[INFO] [stdout] 183 | |     Session,
[INFO] [stdout] 184 | |     *const ffi::otc_stream,
[INFO] [stdout] 185 | |     ffi::otc_stream_video_type
[INFO] [stdout] 186 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<u32 as Into<u32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const i8`
[INFO] [stdout]    --> opentok/src/macros.rs:44:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  44 |                       target.$fn_name(arg1.into(), arg2.into(), arg3.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:187:1
[INFO] [stdout]     |
[INFO] [stdout] 187 | / ffi_callback!(
[INFO] [stdout] 188 | |     on_signal_received,
[INFO] [stdout] 189 | |     *mut ffi::otc_session,
[INFO] [stdout] 190 | |     Session,
[INFO] [stdout] ...   |
[INFO] [stdout] 193 | |     *const ffi::otc_connection
[INFO] [stdout] 194 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const i8 as Into<*const i8>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const i8`
[INFO] [stdout]    --> opentok/src/macros.rs:44:50
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  44 |                       target.$fn_name(arg1.into(), arg2.into(), arg3.into());
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:187:1
[INFO] [stdout]     |
[INFO] [stdout] 187 | / ffi_callback!(
[INFO] [stdout] 188 | |     on_signal_received,
[INFO] [stdout] 189 | |     *mut ffi::otc_session,
[INFO] [stdout] 190 | |     Session,
[INFO] [stdout] ...   |
[INFO] [stdout] 193 | |     *const ffi::otc_connection
[INFO] [stdout] 194 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const i8 as Into<*const i8>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_connection`
[INFO] [stdout]    --> opentok/src/macros.rs:44:63
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  44 |                       target.$fn_name(arg1.into(), arg2.into(), arg3.into());
[INFO] [stdout]     |                                                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:187:1
[INFO] [stdout]     |
[INFO] [stdout] 187 | / ffi_callback!(
[INFO] [stdout] 188 | |     on_signal_received,
[INFO] [stdout] 189 | |     *mut ffi::otc_session,
[INFO] [stdout] 190 | |     Session,
[INFO] [stdout] ...   |
[INFO] [stdout] 193 | |     *const ffi::otc_connection
[INFO] [stdout] 194 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_connection as Into<*const otc_connection>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const i8`
[INFO] [stdout]    --> opentok/src/macros.rs:29:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:195:1
[INFO] [stdout]     |
[INFO] [stdout] 195 | / ffi_callback!(
[INFO] [stdout] 196 | |     on_archive_started,
[INFO] [stdout] 197 | |     *mut ffi::otc_session,
[INFO] [stdout] 198 | |     Session,
[INFO] [stdout] 199 | |     *const c_char,
[INFO] [stdout] 200 | |     *const c_char
[INFO] [stdout] 201 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const i8 as Into<*const i8>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const i8`
[INFO] [stdout]    --> opentok/src/macros.rs:29:50
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:195:1
[INFO] [stdout]     |
[INFO] [stdout] 195 | / ffi_callback!(
[INFO] [stdout] 196 | |     on_archive_started,
[INFO] [stdout] 197 | |     *mut ffi::otc_session,
[INFO] [stdout] 198 | |     Session,
[INFO] [stdout] 199 | |     *const c_char,
[INFO] [stdout] 200 | |     *const c_char
[INFO] [stdout] 201 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const i8 as Into<*const i8>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const i8`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:202:1
[INFO] [stdout]     |
[INFO] [stdout] 202 | / ffi_callback!(
[INFO] [stdout] 203 | |     on_archive_stopped,
[INFO] [stdout] 204 | |     *mut ffi::otc_session,
[INFO] [stdout] 205 | |     Session,
[INFO] [stdout] 206 | |     *const c_char
[INFO] [stdout] 207 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const i8 as Into<*const i8>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const i8`
[INFO] [stdout]    --> opentok/src/macros.rs:29:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:208:1
[INFO] [stdout]     |
[INFO] [stdout] 208 | / ffi_callback!(
[INFO] [stdout] 209 | |     on_error,
[INFO] [stdout] 210 | |     *mut ffi::otc_session,
[INFO] [stdout] 211 | |     Session,
[INFO] [stdout] 212 | |     *const c_char,
[INFO] [stdout] 213 | |     ffi::otc_session_error_code
[INFO] [stdout] 214 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const i8 as Into<*const i8>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u32`
[INFO] [stdout]    --> opentok/src/macros.rs:29:50
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/session.rs:208:1
[INFO] [stdout]     |
[INFO] [stdout] 208 | / ffi_callback!(
[INFO] [stdout] 209 | |     on_error,
[INFO] [stdout] 210 | |     *mut ffi::otc_session,
[INFO] [stdout] 211 | |     Session,
[INFO] [stdout] 212 | |     *const c_char,
[INFO] [stdout] 213 | |     ffi::otc_session_error_code
[INFO] [stdout] 214 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<u32 as Into<u32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_stream`
[INFO] [stdout]   --> opentok/src/macros.rs:15:37
[INFO] [stdout]    |
[INFO] [stdout]  1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout] 15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]    |                                       ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: opentok/src/subscriber.rs:85:1
[INFO] [stdout]    |
[INFO] [stdout] 85 | / ffi_callback!(
[INFO] [stdout] 86 | |     on_connected,
[INFO] [stdout] 87 | |     *mut ffi::otc_subscriber,
[INFO] [stdout] 88 | |     Subscriber,
[INFO] [stdout] 89 | |     *const ffi::otc_stream
[INFO] [stdout] 90 | | );
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<*const otc_stream as Into<*const otc_stream>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const otc_video_frame`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/subscriber.rs:96:1
[INFO] [stdout]     |
[INFO] [stdout]  96 | / ffi_callback!(
[INFO] [stdout]  97 | |     on_render_frame,
[INFO] [stdout]  98 | |     *mut ffi::otc_subscriber,
[INFO] [stdout]  99 | |     Subscriber,
[INFO] [stdout] 100 | |     *const ffi::otc_video_frame
[INFO] [stdout] 101 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const otc_video_frame as Into<*const otc_video_frame>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u32`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/subscriber.rs:103:1
[INFO] [stdout]     |
[INFO] [stdout] 103 | / ffi_callback!(
[INFO] [stdout] 104 | |     on_video_disabled,
[INFO] [stdout] 105 | |     *mut ffi::otc_subscriber,
[INFO] [stdout] 106 | |     Subscriber,
[INFO] [stdout] 107 | |     ffi::otc_video_reason
[INFO] [stdout] 108 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<u32 as Into<u32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u32`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/subscriber.rs:110:1
[INFO] [stdout]     |
[INFO] [stdout] 110 | / ffi_callback!(
[INFO] [stdout] 111 | |     on_video_enabled,
[INFO] [stdout] 112 | |     *mut ffi::otc_subscriber,
[INFO] [stdout] 113 | |     Subscriber,
[INFO] [stdout] 114 | |     ffi::otc_video_reason
[INFO] [stdout] 115 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<u32 as Into<u32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `f32`
[INFO] [stdout]    --> opentok/src/macros.rs:15:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  15 |                       target.$fn_name(arg1.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/subscriber.rs:135:1
[INFO] [stdout]     |
[INFO] [stdout] 135 | / ffi_callback!(
[INFO] [stdout] 136 | |     on_audio_level_updated,
[INFO] [stdout] 137 | |     *mut ffi::otc_subscriber,
[INFO] [stdout] 138 | |     Subscriber,
[INFO] [stdout] 139 | |     f32
[INFO] [stdout] 140 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<f32 as Into<f32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `*const i8`
[INFO] [stdout]    --> opentok/src/macros.rs:29:37
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                       ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/subscriber.rs:142:1
[INFO] [stdout]     |
[INFO] [stdout] 142 | / ffi_callback!(
[INFO] [stdout] 143 | |     on_error,
[INFO] [stdout] 144 | |     *mut ffi::otc_subscriber,
[INFO] [stdout] 145 | |     Subscriber,
[INFO] [stdout] 146 | |     *const c_char,
[INFO] [stdout] 147 | |     ffi::otc_subscriber_error_code
[INFO] [stdout] 148 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<*const i8 as Into<*const i8>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `u32`
[INFO] [stdout]    --> opentok/src/macros.rs:29:50
[INFO] [stdout]     |
[INFO] [stdout]   1 |   macro_rules! ffi_callback {
[INFO] [stdout] ...
[INFO] [stdout]  29 |                       target.$fn_name(arg1.into(), arg2.into());
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: opentok/src/subscriber.rs:142:1
[INFO] [stdout]     |
[INFO] [stdout] 142 | / ffi_callback!(
[INFO] [stdout] 143 | |     on_error,
[INFO] [stdout] 144 | |     *mut ffi::otc_subscriber,
[INFO] [stdout] 145 | |     Subscriber,
[INFO] [stdout] 146 | |     *const c_char,
[INFO] [stdout] 147 | |     ffi::otc_subscriber_error_code
[INFO] [stdout] 148 | | );
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<u32 as Into<u32>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `opentok` (lib test) due to 34 previous errors
[INFO] running `Command { std: "docker" "inspect" "de57c52eae38399ad03b1d6470087dfd35fbed49df3af12d635e5830fa854279", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "de57c52eae38399ad03b1d6470087dfd35fbed49df3af12d635e5830fa854279", kill_on_drop: false }`
[INFO] [stdout] de57c52eae38399ad03b1d6470087dfd35fbed49df3af12d635e5830fa854279
