[INFO] cloning repository https://github.com/Mehrbod2002/collab-bitcoin-wallet
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Mehrbod2002/collab-bitcoin-wallet" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMehrbod2002%2Fcollab-bitcoin-wallet", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMehrbod2002%2Fcollab-bitcoin-wallet'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 946d9872db72587532226304d348924fef606039
[INFO] checking Mehrbod2002/collab-bitcoin-wallet/946d9872db72587532226304d348924fef606039 against master#818811b3cd1e0ff0d8ef20d5a4cf0b7c079929bc for pr-156114
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMehrbod2002%2Fcollab-bitcoin-wallet" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Mehrbod2002/collab-bitcoin-wallet
[INFO] finished tweaking git repo https://github.com/Mehrbod2002/collab-bitcoin-wallet
[INFO] tweaked toml for git repo https://github.com/Mehrbod2002/collab-bitcoin-wallet written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Mehrbod2002/collab-bitcoin-wallet on toolchain 818811b3cd1e0ff0d8ef20d5a4cf0b7c079929bc
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+818811b3cd1e0ff0d8ef20d5a4cf0b7c079929bc" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Mehrbod2002/collab-bitcoin-wallet 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" "+818811b3cd1e0ff0d8ef20d5a4cf0b7c079929bc" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded utoipa v4.2.3
[INFO] [stderr]   Downloaded tor-general-addr v0.30.0
[INFO] [stderr]   Downloaded indexmap v2.11.1
[INFO] [stderr]   Downloaded value-bag v1.11.1
[INFO] [stderr]   Downloaded retry-error v0.6.5
[INFO] [stderr]   Downloaded tor-error v0.30.0
[INFO] [stderr]   Downloaded shellexpand v3.1.1
[INFO] [stderr]   Downloaded onyums v0.1.24
[INFO] [stderr]   Downloaded coarsetime v0.1.36
[INFO] [stderr]   Downloaded cc v1.2.36
[INFO] [stderr]   Downloaded tor-rtcompat v0.30.0
[INFO] [stderr]   Downloaded blanket v0.3.0
[INFO] [stderr]   Downloaded utoipa-gen v4.3.1
[INFO] [stderr]   Downloaded async_executors v0.7.0
[INFO] [stderr]   Downloaded wasix v0.12.21
[INFO] [stderr]   Downloaded rustix v1.1.1
[INFO] [stderr]   Downloaded utoipa-swagger-ui v4.0.0
[INFO] [stderr]   Downloaded tor-units v0.30.0
[INFO] [stderr]   Downloaded tor-basic-utils v0.30.0
[INFO] [stderr]   Downloaded tor-log-ratelim v0.30.0
[INFO] [stderr]   Downloaded weak-table v0.3.2
[INFO] [stderr]   Downloaded tor-memquota v0.30.0
[INFO] [stderr]   Downloaded tor-config v0.30.0
[INFO] [stderr]   Downloaded tor-proto v0.30.0
[INFO] [stderr]   Downloaded serde_ignored v0.1.12
[INFO] [stderr]   Downloaded derive_builder_fork_arti v0.11.2
[INFO] [stderr]   Downloaded derive-deftly v0.14.6
[INFO] [stderr]   Downloaded derive_builder_core_fork_arti v0.11.2
[INFO] [stderr]   Downloaded postage v0.5.0
[INFO] [stderr]   Downloaded derive-deftly-macros v0.14.6
[INFO] [stderr]   Downloaded derive_builder_macro_fork_arti v0.11.2
[INFO] [stderr]   Downloaded pwd-grp v1.0.0
[INFO] [stderr]   Downloaded fs-mistrust v0.9.3
[INFO] [stderr]   Downloaded derive-deftly v1.0.1
[INFO] [stderr]   Downloaded derive-deftly-macros v1.0.1
[INFO] [stderr]   Downloaded oneshot-fused-workaround v0.2.3
[INFO] [stderr]   Downloaded tor-rtmock v0.30.0
[INFO] [stderr]   Downloaded slotmap-careful v0.2.5
[INFO] [stderr]   Downloaded tor-protover v0.30.0
[INFO] [stderr]   Downloaded priority-queue v2.5.0
[INFO] [stderr]   Downloaded tor-async-utils v0.30.0
[INFO] [stderr]   Downloaded safelog v0.4.8
[INFO] [stderr]   Downloaded caret v0.5.3
[INFO] [stderr]   Downloaded tor-llcrypto v0.30.0
[INFO] [stderr]   Downloaded fluid-let v1.0.0
[INFO] [stderr]   Downloaded rdrand v0.8.3
[INFO] [stderr]   Downloaded rand_jitter v0.5.0
[INFO] [stderr]   Downloaded ssh-cipher v0.2.0
[INFO] [stderr]   Downloaded tor-linkspec v0.30.0
[INFO] [stderr]   Downloaded ssh-encoding v0.2.0
[INFO] [stderr]   Downloaded tor-checkable v0.30.0
[INFO] [stderr]   Downloaded tor-cert v0.30.0
[INFO] [stderr]   Downloaded tor-bytes v0.30.0
[INFO] [stderr]   Downloaded tor-key-forge v0.30.0
[INFO] [stderr]   Downloaded ssh-key v0.6.7
[INFO] [stderr]   Downloaded tor-hscrypto v0.30.0
[INFO] [stderr]   Downloaded equix v0.2.5
[INFO] [stderr]   Downloaded sanitize-filename v0.6.0
[INFO] [stderr]   Downloaded typed-index-collections v3.1.0
[INFO] [stderr]   Downloaded fslock-arti-fork v0.2.0
[INFO] [stderr]   Downloaded hashx v0.3.4
[INFO] [stderr]   Downloaded tor-hsservice v0.30.0
[INFO] [stderr]   Downloaded tor-relay-selection v0.30.0
[INFO] [stderr]   Downloaded async-compression v0.4.30
[INFO] [stderr]   Downloaded tor-keymgr v0.30.0
[INFO] [stderr]   Downloaded tor-dirclient v0.30.0
[INFO] [stderr]   Downloaded humantime-serde v1.1.1
[INFO] [stderr]   Downloaded tor-socksproto v0.30.0
[INFO] [stderr]   Downloaded fslock-guard v0.2.4
[INFO] [stderr]   Downloaded tor-config-path v0.30.0
[INFO] [stderr]   Downloaded bounded-vec-deque v0.1.1
[INFO] [stderr]   Downloaded liblzma v0.4.4
[INFO] [stderr]   Downloaded tor-chanmgr v0.30.0
[INFO] [stderr]   Downloaded tor-circmgr v0.30.0
[INFO] [stderr]   Downloaded tor-netdoc v0.30.0
[INFO] [stderr]   Downloaded k12 v0.3.0
[INFO] [stderr]   Downloaded tor-cell v0.30.0
[INFO] [stderr]   Downloaded tor-netdir v0.30.0
[INFO] [stderr]   Downloaded tor-persist v0.30.0
[INFO] [stderr]   Downloaded tor-guardmgr v0.30.0
[INFO] [stderr]   Downloaded compression-codecs v0.4.30
[INFO] [stderr]   Downloaded arti-client v0.30.0
[INFO] [stderr]   Downloaded tor-rpcbase v0.30.0
[INFO] [stderr]   Downloaded futures-await-test v0.3.0
[INFO] [stderr]   Downloaded futures-await-test-macro v0.3.0
[INFO] [stderr]   Downloaded tor-dirmgr v0.30.0
[INFO] [stderr]   Downloaded tor-ptmgr v0.30.0
[INFO] [stderr]   Downloaded tor-consdiff v0.30.0
[INFO] [stderr]   Downloaded tor-geoip v0.30.0
[INFO] [stderr]   Downloaded tor-hsclient v0.30.0
[INFO] [stderr]   Downloaded secp256k1 v0.31.1
[INFO] [stderr]   Downloaded mockall v0.13.1
[INFO] [stderr]   Downloaded musig2 v0.3.1
[INFO] [stderr]   Downloaded secp v0.6.0
[INFO] [stderr]   Downloaded secp256k1-sys v0.11.0
[INFO] [stderr]   Downloaded mockall_derive v0.13.1
[INFO] [stderr]   Downloaded bitcoin v0.32.7
[INFO] [stderr]   Downloaded artiqwest v0.1.19
[INFO] [stderr]   Downloaded uuid-macro-internal v1.18.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+818811b3cd1e0ff0d8ef20d5a4cf0b7c079929bc" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] e3c188058398fc851732f175b023fec5fc8c1774f3a14c6db8128262ad9fbc57
[INFO] running `Command { std: "docker" "start" "-a" "e3c188058398fc851732f175b023fec5fc8c1774f3a14c6db8128262ad9fbc57", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e3c188058398fc851732f175b023fec5fc8c1774f3a14c6db8128262ad9fbc57", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e3c188058398fc851732f175b023fec5fc8c1774f3a14c6db8128262ad9fbc57", kill_on_drop: false }`
[INFO] [stdout] e3c188058398fc851732f175b023fec5fc8c1774f3a14c6db8128262ad9fbc57
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+818811b3cd1e0ff0d8ef20d5a4cf0b7c079929bc" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 9f6f74b950cc339d067c7efccb4565b0e9c01edea6a68b8088cfd215f5f108cf
[INFO] running `Command { std: "docker" "start" "-a" "9f6f74b950cc339d067c7efccb4565b0e9c01edea6a68b8088cfd215f5f108cf", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.101
[INFO] [stderr]    Compiling find-msvc-tools v0.1.1
[INFO] [stderr]     Checking value-bag v1.11.1
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]     Checking lock_api v0.4.13
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]    Compiling indexmap v2.11.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]    Compiling openssl v0.10.73
[INFO] [stderr]    Compiling rustix v1.1.1
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]     Checking regex-syntax v0.8.6
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling cc v1.2.36
[INFO] [stderr]     Checking log v0.4.28
[INFO] [stderr]    Compiling sha3 v0.10.8
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]    Compiling void v1.0.2
[INFO] [stderr]     Checking getrandom v0.3.3
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking async-lock v3.4.1
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]     Checking heck v0.5.0
[INFO] [stderr]     Checking retry-error v0.6.5
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]    Compiling derive-deftly-macros v1.0.1
[INFO] [stderr]     Checking dirs-sys v0.5.0
[INFO] [stderr]     Checking async-executor v1.13.3
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking base64ct v1.8.0
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]    Compiling derive-deftly-macros v0.14.6
[INFO] [stderr]     Checking async-channel v1.9.0
[INFO] [stderr]     Checking kv-log-macro v1.0.7
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking pem-rfc7468 v0.7.0
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]    Compiling async_executors v0.7.0
[INFO] [stderr]     Checking dirs v6.0.0
[INFO] [stderr]     Checking atomic v0.5.3
[INFO] [stderr]     Checking coarsetime v0.1.36
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling uncased v0.9.10
[INFO] [stderr]    Compiling slotmap v1.0.7
[INFO] [stderr]     Checking amplify_num v0.5.3
[INFO] [stderr]     Checking inotify-sys v0.1.5
[INFO] [stderr]    Compiling figment v0.10.19
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]     Checking humantime v2.2.0
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking inotify v0.11.0
[INFO] [stderr]     Checking ordered-float v2.10.1
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking signature v2.2.0
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]     Checking notify-types v2.0.0
[INFO] [stderr]     Checking weak-table v0.3.2
[INFO] [stderr]     Checking rusticata-macros v4.1.0
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking notify v8.2.0
[INFO] [stderr]     Checking ed25519 v2.2.3
[INFO] [stderr]    Compiling openssl-src v300.5.2+3.5.2
[INFO] [stderr]     Checking fluid-let v1.0.0
[INFO] [stderr]     Checking rand_jitter v0.5.0
[INFO] [stderr]     Checking num-iter v0.1.45
[INFO] [stderr]     Checking rdrand v0.8.3
[INFO] [stderr]     Checking caret v0.5.3
[INFO] [stderr]     Checking ssh-encoding v0.2.0
[INFO] [stderr]     Checking regex-automata v0.4.10
[INFO] [stderr]     Checking sec1 v0.7.3
[INFO] [stderr]     Checking downcast-rs v2.0.2
[INFO] [stderr]     Checking time v0.3.43
[INFO] [stderr]     Checking by_address v1.2.1
[INFO] [stderr]    Compiling serde_json v1.0.143
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking nu-ansi-term v0.50.1
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking typed-index-collections v3.1.0
[INFO] [stderr]     Checking fslock-arti-fork v0.2.0
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]     Checking hkdf v0.12.4
[INFO] [stderr]     Checking fslock v0.2.1
[INFO] [stderr]     Checking os_str_bytes v6.6.1
[INFO] [stderr]     Checking compression-core v0.4.29
[INFO] [stderr]     Checking directories v6.0.0
[INFO] [stderr]     Checking bounded-vec-deque v0.1.1
[INFO] [stderr]     Checking inventory v0.3.21
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]     Checking glob-match v0.2.1
[INFO] [stderr]    Compiling bitcoin-io v0.1.3
[INFO] [stderr]    Compiling option-ext v0.2.0
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling bitcoin-internals v0.3.0
[INFO] [stderr]    Compiling openssl-sys v0.9.109
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling liblzma-sys v0.4.4
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling secp256k1-sys v0.11.0
[INFO] [stderr]    Compiling proc-macro-crate v3.3.0
[INFO] [stderr]    Compiling secp256k1-sys v0.10.1
[INFO] [stderr]    Compiling flate2 v1.1.2
[INFO] [stderr]     Checking hashlink v0.9.1
[INFO] [stderr]     Checking hex-conservative v0.2.1
[INFO] [stderr]     Checking k12 v0.3.0
[INFO] [stderr]     Checking memmap2 v0.9.8
[INFO] [stderr]    Compiling parking_lot_core v0.8.6
[INFO] [stderr]     Checking bitcoin_hashes v0.14.0
[INFO] [stderr]    Compiling zip v0.6.6
[INFO] [stderr]    Compiling shellexpand v3.1.1
[INFO] [stderr]    Compiling rust-embed-utils v8.7.2
[INFO] [stderr]    Compiling darling_core v0.14.4
[INFO] [stderr]    Compiling amplify_syn v2.0.1
[INFO] [stderr]    Compiling mockall_derive v0.13.1
[INFO] [stderr]     Checking regex v1.11.2
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking bstr v1.12.0
[INFO] [stderr]     Checking predicates-core v1.0.9
[INFO] [stderr]    Compiling hex_lit v0.1.1
[INFO] [stderr]    Compiling utoipa-swagger-ui v4.0.0
[INFO] [stderr]     Checking sanitize-filename v0.6.0
[INFO] [stderr]     Checking yasna v0.5.2
[INFO] [stderr]     Checking pem v3.0.5
[INFO] [stderr]     Checking universal-hash v0.5.1
[INFO] [stderr]    Compiling bitcoin v0.32.7
[INFO] [stderr]     Checking predicates-tree v1.0.12
[INFO] [stderr]     Checking poly1305 v0.8.0
[INFO] [stderr]     Checking clap_builder v4.5.47
[INFO] [stderr]     Checking parking_lot v0.11.2
[INFO] [stderr]     Checking base58ck v0.1.0
[INFO] [stderr]     Checking predicates v3.1.3
[INFO] [stderr]     Checking bitcoin-units v0.1.2
[INFO] [stderr]     Checking secp256k1 v0.31.1
[INFO] [stderr]     Checking aead v0.5.2
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking fragile v2.0.1
[INFO] [stderr]     Checking downcast v0.11.0
[INFO] [stderr]    Compiling darling_macro v0.14.4
[INFO] [stderr]     Checking polling v3.10.0
[INFO] [stderr]    Compiling amplify_derive v4.0.1
[INFO] [stderr]    Compiling futures-await-test-macro v0.3.0
[INFO] [stderr]    Compiling rustls v0.23.31
[INFO] [stderr]     Checking bech32 v0.11.0
[INFO] [stderr]    Compiling darling v0.14.4
[INFO] [stderr]     Checking async-io v2.5.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling derive_builder_core_fork_arti v0.11.2
[INFO] [stderr]     Checking secp v0.6.0
[INFO] [stderr]     Checking sled v0.34.7
[INFO] [stderr]     Checking musig2 v0.3.1
[INFO] [stderr]     Checking async-signal v0.2.12
[INFO] [stderr]     Checking async-global-executor v2.4.1
[INFO] [stderr]     Checking async-process v2.4.0
[INFO] [stderr]     Checking async-std v1.13.2
[INFO] [stderr]    Compiling derive_builder_macro_fork_arti v0.11.2
[INFO] [stderr]     Checking derive_builder_fork_arti v0.11.2
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling zeroize_derive v1.4.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.16
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]     Checking zeroize v1.8.1
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]     Checking thiserror v2.0.16
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]     Checking tokio v1.47.1
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling derive_more-impl v2.0.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]    Compiling enum-ordinalize v3.1.15
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]    Compiling derive_arbitrary v1.4.2
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling blanket v0.3.0
[INFO] [stderr]     Checking zerovec v0.11.4
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]    Compiling educe v0.4.23
[INFO] [stderr]     Checking arbitrary v1.4.2
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking amplify v4.9.0
[INFO] [stderr]     Checking der v0.7.10
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]     Checking asynchronous-codec v0.7.0
[INFO] [stderr]    Compiling asn1-rs-impl v0.2.0
[INFO] [stderr]    Compiling asn1-rs-derive v0.6.0
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking num-bigint-dig v0.8.4
[INFO] [stderr]     Checking oneshot-fused-workaround v0.2.3
[INFO] [stderr]     Checking postage v0.5.0
[INFO] [stderr]     Checking cookie-factory v0.3.3
[INFO] [stderr]     Checking merlin v3.0.0
[INFO] [stderr]     Checking ctr v0.9.2
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking potential_utf v0.1.3
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]    Compiling visibility v0.1.1
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking ssh-cipher v0.2.0
[INFO] [stderr]     Checking spki v0.7.3
[INFO] [stderr]    Compiling phf_macros v0.11.3
[INFO] [stderr]     Checking ssh-key v0.6.7
[INFO] [stderr]     Checking pkcs8 v0.10.2
[INFO] [stderr]     Checking tracing-subscriber v0.3.20
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]    Compiling tracing-test-macro v0.2.5
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]     Checking asn1-rs v0.7.1
[INFO] [stderr]    Compiling serde_with_macros v3.14.0
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking pkcs1 v0.7.5
[INFO] [stderr]     Checking phf v0.11.3
[INFO] [stderr]    Compiling num_enum_derive v0.7.4
[INFO] [stderr]     Checking ed25519-dalek v2.2.0
[INFO] [stderr]     Checking x25519-dalek v2.0.1
[INFO] [stderr]     Checking rsa v0.9.8
[INFO] [stderr]     Checking fslock-guard v0.2.4
[INFO] [stderr]     Checking rustls-pki-types v1.12.0
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]     Checking liblzma v0.4.4
[INFO] [stderr]    Compiling typetag-impl v0.2.20
[INFO] [stderr]     Checking futures-await-test v0.3.0
[INFO] [stderr]     Checking axum-core v0.5.2
[INFO] [stderr]     Checking der-parser v10.0.0
[INFO] [stderr]     Checking compression-codecs v0.4.30
[INFO] [stderr]     Checking tracing-test v0.2.5
[INFO] [stderr]     Checking rustls-webpki v0.103.4
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]    Compiling rust-embed-impl v8.7.2
[INFO] [stderr]    Compiling uuid-macro-internal v1.18.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking async-compression v0.4.30
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_ignored v0.1.12
[INFO] [stderr]     Checking serde-value v0.7.0
[INFO] [stderr]     Checking serde_with v3.14.0
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking num_enum v0.7.4
[INFO] [stderr]     Checking humantime-serde v1.1.1
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking erased-serde v0.4.6
[INFO] [stderr]     Checking serde_bytes v0.11.17
[INFO] [stderr]     Checking rusqlite v0.32.1
[INFO] [stderr]     Checking serde_path_to_error v0.1.17
[INFO] [stderr]     Checking tokio-util v0.7.16
[INFO] [stderr]     Checking slotmap-careful v0.2.5
[INFO] [stderr]     Checking derive_more v2.0.1
[INFO] [stderr]     Checking priority-queue v2.5.0
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking typetag v0.2.20
[INFO] [stderr]     Checking growable-bloom-filter v2.1.1
[INFO] [stderr]     Checking tor-error v0.30.0
[INFO] [stderr]     Checking tor-general-addr v0.30.0
[INFO] [stderr]     Checking tor-basic-utils v0.30.0
[INFO] [stderr]     Checking safelog v0.4.8
[INFO] [stderr]     Checking h2 v0.4.12
[INFO] [stderr]     Checking tor-config-path v0.30.0
[INFO] [stderr]    Compiling utoipa-gen v4.3.1
[INFO] [stderr]     Checking rust-embed v8.7.2
[INFO] [stderr]     Checking uuid v1.18.1
[INFO] [stderr]     Checking secp256k1 v0.29.1
[INFO] [stderr]     Checking rcgen v0.13.2
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking chacha20 v0.9.1
[INFO] [stderr]    Compiling clap_derive v4.5.47
[INFO] [stderr]     Checking tower-http v0.6.6
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking chacha20poly1305 v0.10.1
[INFO] [stderr]     Checking tor-protover v0.30.0
[INFO] [stderr]     Checking derive-deftly v0.14.6
[INFO] [stderr]     Checking pwd-grp v1.0.0
[INFO] [stderr]     Checking derive-deftly v1.0.1
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking tor-async-utils v0.30.0
[INFO] [stderr]     Checking fs-mistrust v0.9.3
[INFO] [stderr]     Checking tor-rpcbase v0.30.0
[INFO] [stderr]     Checking clap v4.5.47
[INFO] [stderr]     Checking tor-persist v0.30.0
[INFO] [stderr]     Checking mockall v0.13.1
[INFO] [stderr]     Checking tokio-rustls v0.26.2
[INFO] [stderr]     Checking utoipa v4.2.3
[INFO] [stderr]     Checking hyper v1.7.0
[INFO] [stderr]     Checking hyper-util v0.1.16
[INFO] [stderr]     Checking axum v0.8.4
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking async-native-tls v0.5.0
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tungstenite v0.26.2
[INFO] [stderr]     Checking tor-rtcompat v0.30.0
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking reqwest v0.12.23
[INFO] [stderr]     Checking tokio-tungstenite v0.26.2
[INFO] [stderr]     Checking tor-log-ratelim v0.30.0
[INFO] [stderr]     Checking tor-config v0.30.0
[INFO] [stderr]     Checking tor-rtmock v0.30.0
[INFO] [stderr]     Checking tor-memquota v0.30.0
[INFO] [stderr]     Checking tor-llcrypto v0.30.0
[INFO] [stderr]     Checking tor-units v0.30.0
[INFO] [stderr]     Checking tor-bytes v0.30.0
[INFO] [stderr]     Checking tor-checkable v0.30.0
[INFO] [stderr]     Checking tor-consdiff v0.30.0
[INFO] [stderr]     Checking tor-cert v0.30.0
[INFO] [stderr]     Checking tor-linkspec v0.30.0
[INFO] [stderr]     Checking tor-socksproto v0.30.0
[INFO] [stderr]     Checking tor-key-forge v0.30.0
[INFO] [stderr]     Checking tor-hscrypto v0.30.0
[INFO] [stderr]     Checking tor-cell v0.30.0
[INFO] [stderr]     Checking tor-keymgr v0.30.0
[INFO] [stderr]     Checking tor-netdoc v0.30.0
[INFO] [stderr]     Checking tor-proto v0.30.0
[INFO] [stderr]     Checking tor-netdir v0.30.0
[INFO] [stderr]     Checking tor-relay-selection v0.30.0
[INFO] [stderr]     Checking tor-chanmgr v0.30.0
[INFO] [stderr]     Checking tor-guardmgr v0.30.0
[INFO] [stderr]     Checking tor-ptmgr v0.30.0
[INFO] [stderr]     Checking tor-circmgr v0.30.0
[INFO] [stderr]     Checking tor-dirclient v0.30.0
[INFO] [stderr]     Checking tor-dirmgr v0.30.0
[INFO] [stderr]     Checking tor-hsservice v0.30.0
[INFO] [stderr]     Checking tor-hsclient v0.30.0
[INFO] [stderr]     Checking arti-client v0.30.0
[INFO] [stderr]     Checking onyums v0.1.24
[INFO] [stderr]     Checking artiqwest v0.1.19
[INFO] [stderr]     Checking collab-bitcoin-wallet v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0432]: unresolved import `utoipa_swagger_ui::SwaggerUi`
[INFO] [stdout]    --> src/api.rs:16:5
[INFO] [stdout]     |
[INFO] [stdout]  16 | use utoipa_swagger_ui::SwaggerUi;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `SwaggerUi` in the root
[INFO] [stdout]     |
[INFO] [stdout] note: found an item that was configured out
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/utoipa-swagger-ui-4.0.0/src/lib.rs:165:12
[INFO] [stdout]     |
[INFO] [stdout] 160 | #[cfg(any(feature = "actix-web", feature = "rocket", feature = "axum"))]
[INFO] [stdout]     |          ------------------------------------------------------------- the item is gated here
[INFO] [stdout] ...
[INFO] [stdout] 165 | pub struct SwaggerUi {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] help: a similar name exists in the module
[INFO] [stdout]     |
[INFO] [stdout]  16 - use utoipa_swagger_ui::SwaggerUi;
[INFO] [stdout]  16 + use utoipa_swagger_ui::SwaggerFile;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `utoipa_swagger_ui::SwaggerUi`
[INFO] [stdout]    --> src/api.rs:16:5
[INFO] [stdout]     |
[INFO] [stdout]  16 | use utoipa_swagger_ui::SwaggerUi;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `SwaggerUi` in the root
[INFO] [stdout]     |
[INFO] [stdout] note: found an item that was configured out
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/utoipa-swagger-ui-4.0.0/src/lib.rs:165:12
[INFO] [stdout]     |
[INFO] [stdout] 160 | #[cfg(any(feature = "actix-web", feature = "rocket", feature = "axum"))]
[INFO] [stdout]     |          ------------------------------------------------------------- the item is gated here
[INFO] [stdout] ...
[INFO] [stdout] 165 | pub struct SwaggerUi {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] help: a similar name exists in the module
[INFO] [stdout]     |
[INFO] [stdout]  16 - use utoipa_swagger_ui::SwaggerUi;
[INFO] [stdout]  16 + use utoipa_swagger_ui::SwaggerFile;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `artiqwest::Client`
[INFO] [stdout]  --> src/comm.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use artiqwest::Client;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^ no `Client` in the root
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `artiqwest::Client`
[INFO] [stdout]  --> src/comm.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use artiqwest::Client;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^ no `Client` in the root
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `tokio::sync::Arc`
[INFO] [stdout]  --> src/persistence.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^ no `Arc` in `sync`
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this struct instead
[INFO] [stdout]   |
[INFO] [stdout] 3 - use tokio::sync::Arc;
[INFO] [stdout] 3 + use std::sync::Arc;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `tokio::sync::Arc`
[INFO] [stdout]  --> src/persistence.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^ no `Arc` in `sync`
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this struct instead
[INFO] [stdout]   |
[INFO] [stdout] 3 - use tokio::sync::Arc;
[INFO] [stdout] 3 + use std::sync::Arc;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `bitcoin::blockdata::transaction::SighashType`
[INFO] [stdout]  --> src/wallet.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use bitcoin::blockdata::transaction::SighashType;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `SighashType` in `blockdata::transaction`
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing one of these variants instead
[INFO] [stdout]   |
[INFO] [stdout] 5 - use bitcoin::blockdata::transaction::SighashType;
[INFO] [stdout] 5 + use bitcoin::ecdsa::Error::SighashType;
[INFO] [stdout]   |
[INFO] [stdout] 5 - use bitcoin::blockdata::transaction::SighashType;
[INFO] [stdout] 5 + use bitcoin::taproot::SigFromSliceError::SighashType;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `bitcoin::blockdata::transaction::SighashType`
[INFO] [stdout]  --> src/wallet.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use bitcoin::blockdata::transaction::SighashType;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `SighashType` in `blockdata::transaction`
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing one of these variants instead
[INFO] [stdout]   |
[INFO] [stdout] 5 - use bitcoin::blockdata::transaction::SighashType;
[INFO] [stdout] 5 + use bitcoin::ecdsa::Error::SighashType;
[INFO] [stdout]   |
[INFO] [stdout] 5 - use bitcoin::blockdata::transaction::SighashType;
[INFO] [stdout] 5 + use bitcoin::taproot::SigFromSliceError::SighashType;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `bitcoin::taproot::TapSighashType`
[INFO] [stdout]  --> src/wallet.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use bitcoin::taproot::TapSighashType;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `TapSighashType` in `taproot`
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this enum instead
[INFO] [stdout]   |
[INFO] [stdout] 7 - use bitcoin::taproot::TapSighashType;
[INFO] [stdout] 7 + use bitcoin::TapSighashType;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `bitcoin::taproot::TapSighashType`
[INFO] [stdout]  --> src/wallet.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use bitcoin::taproot::TapSighashType;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `TapSighashType` in `taproot`
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this enum instead
[INFO] [stdout]   |
[INFO] [stdout] 7 - use bitcoin::taproot::TapSighashType;
[INFO] [stdout] 7 + use bitcoin::TapSighashType;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `chacha20poly1305::aead::NewAead`
[INFO] [stdout]   --> src/wallet.rs:11:36
[INFO] [stdout]    |
[INFO] [stdout] 11 | use chacha20poly1305::aead::{Aead, NewAead};
[INFO] [stdout]    |                                    ^^^^^^^ no `NewAead` in the root
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `musig2::verify_signature`
[INFO] [stdout]   --> src/wallet.rs:15:35
[INFO] [stdout]    |
[INFO] [stdout] 15 |     aggregate_partial_signatures, verify_signature, FirstRound, KeyAggContext, PartialSignature,
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^ no `verify_signature` in the root
[INFO] [stdout]    |
[INFO] [stdout] help: a similar name exists in the module
[INFO] [stdout]    |
[INFO] [stdout] 15 -     aggregate_partial_signatures, verify_signature, FirstRound, KeyAggContext, PartialSignature,
[INFO] [stdout] 15 +     aggregate_partial_signatures, verify_single, FirstRound, KeyAggContext, PartialSignature,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `chacha20poly1305::aead::NewAead`
[INFO] [stdout]   --> src/wallet.rs:11:36
[INFO] [stdout]    |
[INFO] [stdout] 11 | use chacha20poly1305::aead::{Aead, NewAead};
[INFO] [stdout]    |                                    ^^^^^^^ no `NewAead` in the root
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `musig2::verify_signature`
[INFO] [stdout]   --> src/wallet.rs:15:35
[INFO] [stdout]    |
[INFO] [stdout] 15 |     aggregate_partial_signatures, verify_signature, FirstRound, KeyAggContext, PartialSignature,
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^ no `verify_signature` in the root
[INFO] [stdout]    |
[INFO] [stdout] help: a similar name exists in the module
[INFO] [stdout]    |
[INFO] [stdout] 15 -     aggregate_partial_signatures, verify_signature, FirstRound, KeyAggContext, PartialSignature,
[INFO] [stdout] 15 +     aggregate_partial_signatures, verify_single, FirstRound, KeyAggContext, PartialSignature,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find derive macro `Serialize` in this scope
[INFO] [stdout]   --> src/wallet.rs:24:10
[INFO] [stdout]    |
[INFO] [stdout] 24 | #[derive(Serialize, Deserialize, Clone, Debug)]
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this derive macro
[INFO] [stdout]    |
[INFO] [stdout]  1 + use serde::Serialize;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find derive macro `Deserialize` in this scope
[INFO] [stdout]   --> src/wallet.rs:24:21
[INFO] [stdout]    |
[INFO] [stdout] 24 | #[derive(Serialize, Deserialize, Clone, Debug)]
[INFO] [stdout]    |                     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this derive macro
[INFO] [stdout]    |
[INFO] [stdout]  1 + use serde::Deserialize;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find derive macro `Serialize` in this scope
[INFO] [stdout]   --> src/wallet.rs:24:10
[INFO] [stdout]    |
[INFO] [stdout] 24 | #[derive(Serialize, Deserialize, Clone, Debug)]
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this derive macro
[INFO] [stdout]    |
[INFO] [stdout]  1 + use serde::Serialize;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find derive macro `Deserialize` in this scope
[INFO] [stdout]   --> src/wallet.rs:24:21
[INFO] [stdout]    |
[INFO] [stdout] 24 | #[derive(Serialize, Deserialize, Clone, Debug)]
[INFO] [stdout]    |                     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this derive macro
[INFO] [stdout]    |
[INFO] [stdout]  1 + use serde::Deserialize;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find derive macro `Serialize` in this scope
[INFO] [stdout]   --> src/wallet.rs:62:10
[INFO] [stdout]    |
[INFO] [stdout] 62 | #[derive(Serialize, Deserialize, Clone, Debug)]
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this derive macro
[INFO] [stdout]    |
[INFO] [stdout]  1 + use serde::Serialize;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find derive macro `Deserialize` in this scope
[INFO] [stdout]   --> src/wallet.rs:62:21
[INFO] [stdout]    |
[INFO] [stdout] 62 | #[derive(Serialize, Deserialize, Clone, Debug)]
[INFO] [stdout]    |                     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this derive macro
[INFO] [stdout]    |
[INFO] [stdout]  1 + use serde::Deserialize;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find derive macro `Serialize` in this scope
[INFO] [stdout]   --> src/wallet.rs:62:10
[INFO] [stdout]    |
[INFO] [stdout] 62 | #[derive(Serialize, Deserialize, Clone, Debug)]
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this derive macro
[INFO] [stdout]    |
[INFO] [stdout]  1 + use serde::Serialize;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find derive macro `Deserialize` in this scope
[INFO] [stdout]   --> src/wallet.rs:62:21
[INFO] [stdout]    |
[INFO] [stdout] 62 | #[derive(Serialize, Deserialize, Clone, Debug)]
[INFO] [stdout]    |                     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this derive macro
[INFO] [stdout]    |
[INFO] [stdout]  1 + use serde::Deserialize;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `deserialize` in this scope
[INFO] [stdout]   --> src/api.rs:76:24
[INFO] [stdout]    |
[INFO] [stdout] 76 |     let msg: Message = deserialize(&dec).map_err(|_| StatusCode::BAD_REQUEST)?;
[INFO] [stdout]    |                        ^^^^^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing one of these functions
[INFO] [stdout]    |
[INFO] [stdout]  1 + use bincode::deserialize;
[INFO] [stdout]    |
[INFO] [stdout]  1 + use bitcoin::consensus::deserialize;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Transaction` in this scope
[INFO] [stdout]   --> src/api.rs:84:21
[INFO] [stdout]    |
[INFO] [stdout] 84 |             let tx: Transaction =
[INFO] [stdout]    |                     ^^^^^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use bitcoin::Transaction;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `TapSighash` in crate `musig2`
[INFO] [stdout]   --> src/api.rs:86:34
[INFO] [stdout]    |
[INFO] [stdout] 86 |             let sighash: musig2::TapSighash = sighash_ser
[INFO] [stdout]    |                                  ^^^^^^^^^^ not found in `musig2`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use bitcoin::TapSighash;
[INFO] [stdout]    |
[INFO] [stdout] help: if you import `TapSighash`, refer to it directly
[INFO] [stdout]    |
[INFO] [stdout] 86 -             let sighash: musig2::TapSighash = sighash_ser
[INFO] [stdout] 86 +             let sighash: TapSighash = sighash_ser
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `fill_bytes` in crate `rand`
[INFO] [stdout]   --> src/api.rs:91:19
[INFO] [stdout]    |
[INFO] [stdout] 91 |             rand::fill_bytes(&mut nonce_seed);
[INFO] [stdout]    |                   ^^^^^^^^^^ not found in `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `SecNonceSpices` in this scope
[INFO] [stdout]   --> src/api.rs:96:17
[INFO] [stdout]    |
[INFO] [stdout] 96 |                 SecNonceSpices::new()
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^ use of undeclared type `SecNonceSpices`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use musig2::SecNonceSpices;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `SigningState` in this scope
[INFO] [stdout]    --> src/api.rs:111:35
[INFO] [stdout]     |
[INFO] [stdout] 111 |                     .insert(txid, SigningState::Approved { second });
[INFO] [stdout]     |                                   ^^^^^^^^^^^^ use of undeclared type `SigningState`
[INFO] [stdout]     |
[INFO] [stdout] note: enum `crate::wallet::SigningState` exists but is inaccessible
[INFO] [stdout]    --> src/wallet.rs:50:1
[INFO] [stdout]     |
[INFO] [stdout]  50 | enum SigningState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ not accessible
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `SigningState` in this scope
[INFO] [stdout]    --> src/api.rs:121:25
[INFO] [stdout]     |
[INFO] [stdout] 121 |             if let Some(SigningState::Approved { second }) = state_w.signing_states.get(&txid) {
[INFO] [stdout]     |                         ^^^^^^^^^^^^ use of undeclared type `SigningState`
[INFO] [stdout]     |
[INFO] [stdout] note: enum `crate::wallet::SigningState` exists but is inaccessible
[INFO] [stdout]    --> src/wallet.rs:50:1
[INFO] [stdout]     |
[INFO] [stdout]  50 | enum SigningState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ not accessible
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `aggregate_partial_signatures` in this scope
[INFO] [stdout]    --> src/api.rs:127:38
[INFO] [stdout]     |
[INFO] [stdout] 127 |                 let full_sig_bytes = aggregate_partial_signatures(
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing one of these functions
[INFO] [stdout]     |
[INFO] [stdout]   1 + use musig2::adaptor::aggregate_partial_signatures;
[INFO] [stdout]     |
[INFO] [stdout]   1 + use musig2::aggregate_partial_signatures;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `sighash` in this scope
[INFO] [stdout]    --> src/api.rs:131:22
[INFO] [stdout]     |
[INFO] [stdout] 131 |                     &sighash,
[INFO] [stdout]     |                      ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: the binding `sighash` is available in a different scope in the same function
[INFO] [stdout]    --> src/api.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  86 |             let sighash: musig2::TapSighash = sighash_ser
[INFO] [stdout]     |                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `TapSighashType` in this scope
[INFO] [stdout]    --> src/api.rs:135:35
[INFO] [stdout]     |
[INFO] [stdout] 135 |                     sighash_type: TapSighashType::Default,
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^ use of undeclared type `TapSighashType`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this enum
[INFO] [stdout]     |
[INFO] [stdout]   1 + use bitcoin::TapSighashType;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `SigningState` in this scope
[INFO] [stdout]    --> src/api.rs:138:53
[INFO] [stdout]     |
[INFO] [stdout] 138 |                 state_w.signing_states.insert(txid, SigningState::Completed);
[INFO] [stdout]     |                                                     ^^^^^^^^^^^^ use of undeclared type `SigningState`
[INFO] [stdout]     |
[INFO] [stdout] note: enum `crate::wallet::SigningState` exists but is inaccessible
[INFO] [stdout]    --> src/wallet.rs:50:1
[INFO] [stdout]     |
[INFO] [stdout]  50 | enum SigningState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ not accessible
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `Txid` in this scope
[INFO] [stdout]    --> src/api.rs:148:19
[INFO] [stdout]     |
[INFO] [stdout] 148 |             txid: Txid::all_zeros(),
[INFO] [stdout]     |                   ^^^^ use of undeclared type `Txid`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout]   1 + use bitcoin::Txid;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `serialize` in this scope
[INFO] [stdout]    --> src/api.rs:151:15
[INFO] [stdout]     |
[INFO] [stdout] 151 |     let ser = serialize(&response).map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?;
[INFO] [stdout]     |               ^^^^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing one of these functions
[INFO] [stdout]     |
[INFO] [stdout]   1 + use bincode::serialize;
[INFO] [stdout]     |
[INFO] [stdout]   1 + use bitcoin::consensus::serialize;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `encrypt` in module `self`
[INFO] [stdout]   --> src/comm.rs:40:31
[INFO] [stdout]    |
[INFO] [stdout] 40 |         let encrypted = self::encrypt(&ser, &shared);
[INFO] [stdout]    |                               ^^^^^^^ not found in `self`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `decrypt` in module `self`
[INFO] [stdout]   --> src/comm.rs:47:25
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let dec = self::decrypt(&enc_resp, &shared)?;
[INFO] [stdout]    |                         ^^^^^^^ not found in `self`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `ChaCha20Poly1305` in this scope
[INFO] [stdout]   --> src/comm.rs:52:22
[INFO] [stdout]    |
[INFO] [stdout] 52 |         let cipher = ChaCha20Poly1305::new(shared_secret.into());
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^ use of undeclared type `ChaCha20Poly1305`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this type alias
[INFO] [stdout]    |
[INFO] [stdout]  1 + use chacha20poly1305::ChaCha20Poly1305;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `Nonce` in this scope
[INFO] [stdout]   --> src/comm.rs:53:21
[INFO] [stdout]    |
[INFO] [stdout] 53 |         let nonce = Nonce::from_slice(&rand::random::<[u8; 12]>());
[INFO] [stdout]    |                     ^^^^^ use of undeclared type `Nonce`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this type alias
[INFO] [stdout]    |
[INFO] [stdout]  1 + use chacha20poly1305::Nonce;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `ChaCha20Poly1305` in this scope
[INFO] [stdout]   --> src/comm.rs:61:22
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let cipher = ChaCha20Poly1305::new(shared_secret.into());
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^ use of undeclared type `ChaCha20Poly1305`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this type alias
[INFO] [stdout]    |
[INFO] [stdout]  1 + use chacha20poly1305::ChaCha20Poly1305;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `Nonce` in this scope
[INFO] [stdout]   --> src/comm.rs:62:21
[INFO] [stdout]    |
[INFO] [stdout] 62 |         let nonce = Nonce::from_slice(&encrypted[0..12]);
[INFO] [stdout]    |                     ^^^^^ use of undeclared type `Nonce`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this type alias
[INFO] [stdout]    |
[INFO] [stdout]  1 + use chacha20poly1305::Nonce;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `TapSighash` in crate `musig2`
[INFO] [stdout]   --> src/wallet.rs:53:26
[INFO] [stdout]    |
[INFO] [stdout] 53 |         sighash: musig2::TapSighash,
[INFO] [stdout]    |                          ^^^^^^^^^^ not found in `musig2`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use bitcoin::TapSighash;
[INFO] [stdout]    |
[INFO] [stdout] help: if you import `TapSighash`, refer to it directly
[INFO] [stdout]    |
[INFO] [stdout] 53 -         sighash: musig2::TapSighash,
[INFO] [stdout] 53 +         sighash: TapSighash,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `HashMap` in this scope
[INFO] [stdout]   --> src/wallet.rs:77:25
[INFO] [stdout]    |
[INFO] [stdout] 77 |     pub signing_states: HashMap<Txid, SigningState>,
[INFO] [stdout]    |                         ^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use std::collections::HashMap;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `All` in this scope
[INFO] [stdout]   --> src/wallet.rs:86:25
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub secp: Secp256k1<All>,
[INFO] [stdout]    |                         ^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]    |
[INFO] [stdout]  1 + use futures::stream::All;
[INFO] [stdout]    |
[INFO] [stdout]  1 + use secp256k1::All;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `HashMap` in this scope
[INFO] [stdout]    --> src/wallet.rs:121:37
[INFO] [stdout]     |
[INFO] [stdout] 121 |                     signing_states: HashMap::new(),
[INFO] [stdout]     |                                     ^^^^^^^ use of undeclared type `HashMap`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout]   1 + use std::collections::HashMap;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `HashMap` in this scope
[INFO] [stdout]    --> src/wallet.rs:147:37
[INFO] [stdout]     |
[INFO] [stdout] 147 |                     signing_states: HashMap::new(),
[INFO] [stdout]     |                                     ^^^^^^^ use of undeclared type `HashMap`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout]   1 + use std::collections::HashMap;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `Witness` in this scope
[INFO] [stdout]    --> src/wallet.rs:258:26
[INFO] [stdout]     |
[INFO] [stdout] 258 |                 witness: Witness::default(),
[INFO] [stdout]     |                          ^^^^^^^ use of undeclared type `Witness`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout]   1 + use bitcoin::Witness;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `Prevouts` in this scope
[INFO] [stdout]    --> src/wallet.rs:274:14
[INFO] [stdout]     |
[INFO] [stdout] 274 |             &Prevouts::All(&[&input_utxo.1]),
[INFO] [stdout]     |              ^^^^^^^^ use of undeclared type `Prevouts`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this enum
[INFO] [stdout]     |
[INFO] [stdout]   1 + use bitcoin::sighash::Prevouts;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `fill_bytes` in crate `rand`
[INFO] [stdout]    --> src/wallet.rs:278:15
[INFO] [stdout]     |
[INFO] [stdout] 278 |         rand::fill_bytes(&mut nonce_seed);
[INFO] [stdout]     |               ^^^^^^^^^^ not found in `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `fill_bytes` in crate `rand`
[INFO] [stdout]    --> src/wallet.rs:348:19
[INFO] [stdout]     |
[INFO] [stdout] 348 |             rand::fill_bytes(&mut nonce_seed);
[INFO] [stdout]     |                   ^^^^^^^^^^ not found in `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `secp256k1::PublicKey`
[INFO] [stdout]   --> src/api.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use secp256k1::PublicKey;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Wallet`
[INFO] [stdout]  --> src/comm.rs:1:30
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::wallet::{Message, Wallet};
[INFO] [stdout]   |                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures::lock::Mutex as FutMutex`
[INFO] [stdout]   --> src/wallet.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use futures::lock::Mutex as FutMutex;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `aggregate_partial_signatures`
[INFO] [stdout]   --> src/wallet.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     aggregate_partial_signatures, verify_signature, FirstRound, KeyAggContext, PartialSignature,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: missing generics for struct `SecondRound`
[INFO] [stdout]    --> src/wallet.rs:57:17
[INFO] [stdout]     |
[INFO] [stdout]  57 |         second: SecondRound,
[INFO] [stdout]     |                 ^^^^^^^^^^^ expected 1 generic argument
[INFO] [stdout]     |
[INFO] [stdout] note: struct defined here, with 1 generic parameter: `M`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/musig2-0.3.1/src/rounds.rs:341:12
[INFO] [stdout]     |
[INFO] [stdout] 341 | pub struct SecondRound<M: AsRef<[u8]>> {
[INFO] [stdout]     |            ^^^^^^^^^^^ -
[INFO] [stdout] help: add missing generic argument
[INFO] [stdout]     |
[INFO] [stdout]  57 |         second: SecondRound<M>,
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `deserialize` in this scope
[INFO] [stdout]   --> src/api.rs:76:24
[INFO] [stdout]    |
[INFO] [stdout] 76 |     let msg: Message = deserialize(&dec).map_err(|_| StatusCode::BAD_REQUEST)?;
[INFO] [stdout]    |                        ^^^^^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing one of these functions
[INFO] [stdout]    |
[INFO] [stdout]  1 + use bincode::deserialize;
[INFO] [stdout]    |
[INFO] [stdout]  1 + use bitcoin::consensus::deserialize;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Transaction` in this scope
[INFO] [stdout]   --> src/api.rs:84:21
[INFO] [stdout]    |
[INFO] [stdout] 84 |             let tx: Transaction =
[INFO] [stdout]    |                     ^^^^^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use bitcoin::Transaction;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `TapSighash` in crate `musig2`
[INFO] [stdout]   --> src/api.rs:86:34
[INFO] [stdout]    |
[INFO] [stdout] 86 |             let sighash: musig2::TapSighash = sighash_ser
[INFO] [stdout]    |                                  ^^^^^^^^^^ not found in `musig2`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use bitcoin::TapSighash;
[INFO] [stdout]    |
[INFO] [stdout] help: if you import `TapSighash`, refer to it directly
[INFO] [stdout]    |
[INFO] [stdout] 86 -             let sighash: musig2::TapSighash = sighash_ser
[INFO] [stdout] 86 +             let sighash: TapSighash = sighash_ser
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `fill_bytes` in crate `rand`
[INFO] [stdout]   --> src/api.rs:91:19
[INFO] [stdout]    |
[INFO] [stdout] 91 |             rand::fill_bytes(&mut nonce_seed);
[INFO] [stdout]    |                   ^^^^^^^^^^ not found in `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `SecNonceSpices` in this scope
[INFO] [stdout]   --> src/api.rs:96:17
[INFO] [stdout]    |
[INFO] [stdout] 96 |                 SecNonceSpices::new()
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^ use of undeclared type `SecNonceSpices`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use musig2::SecNonceSpices;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `SigningState` in this scope
[INFO] [stdout]    --> src/api.rs:111:35
[INFO] [stdout]     |
[INFO] [stdout] 111 |                     .insert(txid, SigningState::Approved { second });
[INFO] [stdout]     |                                   ^^^^^^^^^^^^ use of undeclared type `SigningState`
[INFO] [stdout]     |
[INFO] [stdout] note: enum `crate::wallet::SigningState` exists but is inaccessible
[INFO] [stdout]    --> src/wallet.rs:50:1
[INFO] [stdout]     |
[INFO] [stdout]  50 | enum SigningState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ not accessible
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `SigningState` in this scope
[INFO] [stdout]    --> src/api.rs:121:25
[INFO] [stdout]     |
[INFO] [stdout] 121 |             if let Some(SigningState::Approved { second }) = state_w.signing_states.get(&txid) {
[INFO] [stdout]     |                         ^^^^^^^^^^^^ use of undeclared type `SigningState`
[INFO] [stdout]     |
[INFO] [stdout] note: enum `crate::wallet::SigningState` exists but is inaccessible
[INFO] [stdout]    --> src/wallet.rs:50:1
[INFO] [stdout]     |
[INFO] [stdout]  50 | enum SigningState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ not accessible
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `aggregate_partial_signatures` in this scope
[INFO] [stdout]    --> src/api.rs:127:38
[INFO] [stdout]     |
[INFO] [stdout] 127 |                 let full_sig_bytes = aggregate_partial_signatures(
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing one of these functions
[INFO] [stdout]     |
[INFO] [stdout]   1 + use musig2::adaptor::aggregate_partial_signatures;
[INFO] [stdout]     |
[INFO] [stdout]   1 + use musig2::aggregate_partial_signatures;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `sighash` in this scope
[INFO] [stdout]    --> src/api.rs:131:22
[INFO] [stdout]     |
[INFO] [stdout] 131 |                     &sighash,
[INFO] [stdout]     |                      ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: the binding `sighash` is available in a different scope in the same function
[INFO] [stdout]    --> src/api.rs:86:17
[INFO] [stdout]     |
[INFO] [stdout]  86 |             let sighash: musig2::TapSighash = sighash_ser
[INFO] [stdout]     |                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `TapSighashType` in this scope
[INFO] [stdout]    --> src/api.rs:135:35
[INFO] [stdout]     |
[INFO] [stdout] 135 |                     sighash_type: TapSighashType::Default,
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^ use of undeclared type `TapSighashType`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this enum
[INFO] [stdout]     |
[INFO] [stdout]   1 + use bitcoin::TapSighashType;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `SigningState` in this scope
[INFO] [stdout]    --> src/api.rs:138:53
[INFO] [stdout]     |
[INFO] [stdout] 138 |                 state_w.signing_states.insert(txid, SigningState::Completed);
[INFO] [stdout]     |                                                     ^^^^^^^^^^^^ use of undeclared type `SigningState`
[INFO] [stdout]     |
[INFO] [stdout] note: enum `crate::wallet::SigningState` exists but is inaccessible
[INFO] [stdout]    --> src/wallet.rs:50:1
[INFO] [stdout]     |
[INFO] [stdout]  50 | enum SigningState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ not accessible
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `Txid` in this scope
[INFO] [stdout]    --> src/api.rs:148:19
[INFO] [stdout]     |
[INFO] [stdout] 148 |             txid: Txid::all_zeros(),
[INFO] [stdout]     |                   ^^^^ use of undeclared type `Txid`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout]   1 + use bitcoin::Txid;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `serialize` in this scope
[INFO] [stdout]    --> src/api.rs:151:15
[INFO] [stdout]     |
[INFO] [stdout] 151 |     let ser = serialize(&response).map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?;
[INFO] [stdout]     |               ^^^^^^^^^ not found in this scope
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing one of these functions
[INFO] [stdout]     |
[INFO] [stdout]   1 + use bincode::serialize;
[INFO] [stdout]     |
[INFO] [stdout]   1 + use bitcoin::consensus::serialize;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `encrypt` in module `self`
[INFO] [stdout]   --> src/comm.rs:40:31
[INFO] [stdout]    |
[INFO] [stdout] 40 |         let encrypted = self::encrypt(&ser, &shared);
[INFO] [stdout]    |                               ^^^^^^^ not found in `self`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `decrypt` in module `self`
[INFO] [stdout]   --> src/comm.rs:47:25
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let dec = self::decrypt(&enc_resp, &shared)?;
[INFO] [stdout]    |                         ^^^^^^^ not found in `self`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `ChaCha20Poly1305` in this scope
[INFO] [stdout]   --> src/comm.rs:52:22
[INFO] [stdout]    |
[INFO] [stdout] 52 |         let cipher = ChaCha20Poly1305::new(shared_secret.into());
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^ use of undeclared type `ChaCha20Poly1305`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this type alias
[INFO] [stdout]    |
[INFO] [stdout]  1 + use chacha20poly1305::ChaCha20Poly1305;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `Nonce` in this scope
[INFO] [stdout]   --> src/comm.rs:53:21
[INFO] [stdout]    |
[INFO] [stdout] 53 |         let nonce = Nonce::from_slice(&rand::random::<[u8; 12]>());
[INFO] [stdout]    |                     ^^^^^ use of undeclared type `Nonce`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this type alias
[INFO] [stdout]    |
[INFO] [stdout]  1 + use chacha20poly1305::Nonce;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `ChaCha20Poly1305` in this scope
[INFO] [stdout]   --> src/comm.rs:61:22
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let cipher = ChaCha20Poly1305::new(shared_secret.into());
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^ use of undeclared type `ChaCha20Poly1305`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this type alias
[INFO] [stdout]    |
[INFO] [stdout]  1 + use chacha20poly1305::ChaCha20Poly1305;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `Nonce` in this scope
[INFO] [stdout]   --> src/comm.rs:62:21
[INFO] [stdout]    |
[INFO] [stdout] 62 |         let nonce = Nonce::from_slice(&encrypted[0..12]);
[INFO] [stdout]    |                     ^^^^^ use of undeclared type `Nonce`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this type alias
[INFO] [stdout]    |
[INFO] [stdout]  1 + use chacha20poly1305::Nonce;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `TapSighash` in crate `musig2`
[INFO] [stdout]   --> src/wallet.rs:53:26
[INFO] [stdout]    |
[INFO] [stdout] 53 |         sighash: musig2::TapSighash,
[INFO] [stdout]    |                          ^^^^^^^^^^ not found in `musig2`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use bitcoin::TapSighash;
[INFO] [stdout]    |
[INFO] [stdout] help: if you import `TapSighash`, refer to it directly
[INFO] [stdout]    |
[INFO] [stdout] 53 -         sighash: musig2::TapSighash,
[INFO] [stdout] 53 +         sighash: TapSighash,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `HashMap` in this scope
[INFO] [stdout]   --> src/wallet.rs:77:25
[INFO] [stdout]    |
[INFO] [stdout] 77 |     pub signing_states: HashMap<Txid, SigningState>,
[INFO] [stdout]    |                         ^^^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use std::collections::HashMap;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `All` in this scope
[INFO] [stdout]   --> src/wallet.rs:86:25
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub secp: Secp256k1<All>,
[INFO] [stdout]    |                         ^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing one of these items
[INFO] [stdout]    |
[INFO] [stdout]  1 + use futures::stream::All;
[INFO] [stdout]    |
[INFO] [stdout]  1 + use secp256k1::All;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `HashMap` in this scope
[INFO] [stdout]    --> src/wallet.rs:121:37
[INFO] [stdout]     |
[INFO] [stdout] 121 |                     signing_states: HashMap::new(),
[INFO] [stdout]     |                                     ^^^^^^^ use of undeclared type `HashMap`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout]   1 + use std::collections::HashMap;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `HashMap` in this scope
[INFO] [stdout]    --> src/wallet.rs:147:37
[INFO] [stdout]     |
[INFO] [stdout] 147 |                     signing_states: HashMap::new(),
[INFO] [stdout]     |                                     ^^^^^^^ use of undeclared type `HashMap`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout]   1 + use std::collections::HashMap;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `Witness` in this scope
[INFO] [stdout]    --> src/wallet.rs:258:26
[INFO] [stdout]     |
[INFO] [stdout] 258 |                 witness: Witness::default(),
[INFO] [stdout]     |                          ^^^^^^^ use of undeclared type `Witness`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]     |
[INFO] [stdout]   1 + use bitcoin::Witness;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `Prevouts` in this scope
[INFO] [stdout]    --> src/wallet.rs:274:14
[INFO] [stdout]     |
[INFO] [stdout] 274 |             &Prevouts::All(&[&input_utxo.1]),
[INFO] [stdout]     |              ^^^^^^^^ use of undeclared type `Prevouts`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this enum
[INFO] [stdout]     |
[INFO] [stdout]   1 + use bitcoin::sighash::Prevouts;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `fill_bytes` in crate `rand`
[INFO] [stdout]    --> src/wallet.rs:278:15
[INFO] [stdout]     |
[INFO] [stdout] 278 |         rand::fill_bytes(&mut nonce_seed);
[INFO] [stdout]     |               ^^^^^^^^^^ not found in `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `fill_bytes` in crate `rand`
[INFO] [stdout]    --> src/wallet.rs:348:19
[INFO] [stdout]     |
[INFO] [stdout] 348 |             rand::fill_bytes(&mut nonce_seed);
[INFO] [stdout]     |                   ^^^^^^^^^^ not found in `rand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `secp256k1::PublicKey`
[INFO] [stdout]   --> src/api.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use secp256k1::PublicKey;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Wallet`
[INFO] [stdout]  --> src/comm.rs:1:30
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::wallet::{Message, Wallet};
[INFO] [stdout]   |                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures::lock::Mutex as FutMutex`
[INFO] [stdout]   --> src/wallet.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use futures::lock::Mutex as FutMutex;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `aggregate_partial_signatures`
[INFO] [stdout]   --> src/wallet.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     aggregate_partial_signatures, verify_signature, FirstRound, KeyAggContext, PartialSignature,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]   --> src/comm.rs:30:6
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl dyn Comm {
[INFO] [stdout]    |      ^^^^^^^^ `Comm` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/comm.rs:9:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Comm {
[INFO] [stdout]    |           ---- this trait is not dyn compatible...
[INFO] [stdout]  9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]    |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout] 10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]    |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout] 11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]    |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]    = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]    = help: consider moving `send_message` to another trait
[INFO] [stdout]    = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: missing generics for struct `SecondRound`
[INFO] [stdout]    --> src/wallet.rs:57:17
[INFO] [stdout]     |
[INFO] [stdout]  57 |         second: SecondRound,
[INFO] [stdout]     |                 ^^^^^^^^^^^ expected 1 generic argument
[INFO] [stdout]     |
[INFO] [stdout] note: struct defined here, with 1 generic parameter: `M`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/musig2-0.3.1/src/rounds.rs:341:12
[INFO] [stdout]     |
[INFO] [stdout] 341 | pub struct SecondRound<M: AsRef<[u8]>> {
[INFO] [stdout]     |            ^^^^^^^^^^^ -
[INFO] [stdout] help: add missing generic argument
[INFO] [stdout]     |
[INFO] [stdout]  57 |         second: SecondRound<M>,
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]   --> src/comm.rs:30:6
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl dyn Comm {
[INFO] [stdout]    |      ^^^^^^^^ `Comm` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/comm.rs:9:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Comm {
[INFO] [stdout]    |           ---- this trait is not dyn compatible...
[INFO] [stdout]  9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]    |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout] 10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]    |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout] 11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]    |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]    = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]    = help: consider moving `send_message` to another trait
[INFO] [stdout]    = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `hex` in this scope
[INFO] [stdout]   --> src/api.rs:55:38
[INFO] [stdout]    |
[INFO] [stdout] 55 |     map.insert("enc_pk".to_string(), hex::encode(enc_pk.to_bytes()));
[INFO] [stdout]    |                                      ^^^ use of unresolved module or unlinked crate `hex`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `hex`, use `cargo add hex` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `musig2::secp::Scalar: From<secp256k1::SecretKey>` is not satisfied
[INFO] [stdout]    --> src/api.rs:106:27
[INFO] [stdout]     |
[INFO] [stdout] 106 |                 .finalize(wallet.btc_sk, &sighash)
[INFO] [stdout]     |                  -------- ^^^^^^^^^^^^^ the trait `From<secp256k1::SecretKey>` is not implemented for `musig2::secp::Scalar`
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: `musig2::secp::Scalar` implements trait `From<T>`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/secp-0.6.0/src/scalars.rs:819:13
[INFO] [stdout]     |
[INFO] [stdout] 819 |             impl From<secp256k1::SecretKey> for Scalar {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `From<musig2::secp256k1::SecretKey>`
[INFO] [stdout] ...
[INFO] [stdout] 848 |             impl From<secp256k1::Scalar> for Scalar {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `From<musig2::secp256k1::Scalar>`
[INFO] [stdout]     = note: required for `secp256k1::SecretKey` to implement `Into<musig2::secp::Scalar>`
[INFO] [stdout] note: required by a bound in `FirstRound::finalize`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/musig2-0.3.1/src/rounds.rs:180:22
[INFO] [stdout]     |
[INFO] [stdout] 178 |     pub fn finalize<M>(
[INFO] [stdout]     |            -------- required by a bound in this associated function
[INFO] [stdout] 179 |         self,
[INFO] [stdout] 180 |         seckey: impl Into<Scalar>,
[INFO] [stdout]     |                      ^^^^^^^^^^^^ required by this bound in `FirstRound::finalize`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `musig2::secp::Scalar: From<secp256k1::SecretKey>` is not satisfied
[INFO] [stdout]    --> src/api.rs:106:27
[INFO] [stdout]     |
[INFO] [stdout] 106 |                 .finalize(wallet.btc_sk, &sighash)
[INFO] [stdout]     |                  -------- ^^^^^^^^^^^^^ the trait `From<secp256k1::SecretKey>` is not implemented for `musig2::secp::Scalar`
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: `musig2::secp::Scalar` implements trait `From<T>`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/secp-0.6.0/src/scalars.rs:819:13
[INFO] [stdout]     |
[INFO] [stdout] 819 |             impl From<secp256k1::SecretKey> for Scalar {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `From<musig2::secp256k1::SecretKey>`
[INFO] [stdout] ...
[INFO] [stdout] 848 |             impl From<secp256k1::Scalar> for Scalar {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `From<musig2::secp256k1::Scalar>`
[INFO] [stdout]     = note: required for `secp256k1::SecretKey` to implement `Into<musig2::secp::Scalar>`
[INFO] [stdout] note: required by a bound in `FirstRound::finalize`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/musig2-0.3.1/src/rounds.rs:180:22
[INFO] [stdout]     |
[INFO] [stdout] 178 |     pub fn finalize<M>(
[INFO] [stdout]     |            -------- required by a bound in this associated function
[INFO] [stdout] 179 |         self,
[INFO] [stdout] 180 |         seckey: impl Into<Scalar>,
[INFO] [stdout]     |                      ^^^^^^^^^^^^ required by this bound in `FirstRound::finalize`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/api.rs:136:32
[INFO] [stdout]     |
[INFO] [stdout] 136 |                     signature: sig,
[INFO] [stdout]     |                                ^^^ expected `Signature`, found `MaybeScalar`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/api.rs:136:32
[INFO] [stdout]     |
[INFO] [stdout] 136 |                     signature: sig,
[INFO] [stdout]     |                                ^^^ expected `Signature`, found `MaybeScalar`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `client` on type `&dyn Comm`
[INFO] [stdout]   --> src/comm.rs:33:25
[INFO] [stdout]    |
[INFO] [stdout] 33 |         let resp = self.client.get(&url).send().await?;
[INFO] [stdout]    |                         ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `client` on type `&dyn Comm`
[INFO] [stdout]   --> src/comm.rs:33:25
[INFO] [stdout]    |
[INFO] [stdout] 33 |         let resp = self.client.get(&url).send().await?;
[INFO] [stdout]    |                         ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `wallet::Message: serde::ser::Serialize` is not satisfied
[INFO] [stdout]    --> src/comm.rs:38:29
[INFO] [stdout]     |
[INFO] [stdout]  38 |         let ser = serialize(&msg)?;
[INFO] [stdout]     |                   --------- ^^^^ unsatisfied trait bound
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `serde::ser::Serialize` is not implemented for `wallet::Message`
[INFO] [stdout]    --> src/wallet.rs:25:1
[INFO] [stdout]     |
[INFO] [stdout]  25 | pub enum Message {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for local types consider adding `#[derive(serde::Serialize)]` to your `wallet::Message` type
[INFO] [stdout]     = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]     = help: the following other types implement trait `serde::ser::Serialize`:
[INFO] [stdout]               &'a T
[INFO] [stdout]               &'a mut T
[INFO] [stdout]               ()
[INFO] [stdout]               (T,)
[INFO] [stdout]               (T0, T1)
[INFO] [stdout]               (T0, T1, T2)
[INFO] [stdout]               (T0, T1, T2, T3)
[INFO] [stdout]               (T0, T1, T2, T3, T4)
[INFO] [stdout]             and 336 others
[INFO] [stdout] note: required by a bound in `bincode::serialize`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bincode-1.3.3/src/lib.rs:108:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn serialize<T: ?Sized>(value: &T) -> Result<Vec<u8>>
[INFO] [stdout]     |        --------- required by a bound in this function
[INFO] [stdout] 107 | where
[INFO] [stdout] 108 |     T: serde::Serialize,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^ required by this bound in `serialize`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `wallet::Message: serde::ser::Serialize` is not satisfied
[INFO] [stdout]    --> src/comm.rs:38:29
[INFO] [stdout]     |
[INFO] [stdout]  38 |         let ser = serialize(&msg)?;
[INFO] [stdout]     |                   --------- ^^^^ unsatisfied trait bound
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `serde::ser::Serialize` is not implemented for `wallet::Message`
[INFO] [stdout]    --> src/wallet.rs:25:1
[INFO] [stdout]     |
[INFO] [stdout]  25 | pub enum Message {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for local types consider adding `#[derive(serde::Serialize)]` to your `wallet::Message` type
[INFO] [stdout]     = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]     = help: the following other types implement trait `serde::ser::Serialize`:
[INFO] [stdout]               &'a T
[INFO] [stdout]               &'a mut T
[INFO] [stdout]               ()
[INFO] [stdout]               (T,)
[INFO] [stdout]               (T0, T1)
[INFO] [stdout]               (T0, T1, T2)
[INFO] [stdout]               (T0, T1, T2, T3)
[INFO] [stdout]               (T0, T1, T2, T3, T4)
[INFO] [stdout]             and 336 others
[INFO] [stdout] note: required by a bound in `bincode::serialize`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bincode-1.3.3/src/lib.rs:108:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn serialize<T: ?Sized>(value: &T) -> Result<Vec<u8>>
[INFO] [stdout]     |        --------- required by a bound in this function
[INFO] [stdout] 107 | where
[INFO] [stdout] 108 |     T: serde::Serialize,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^ required by this bound in `serialize`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `shared_secret` on type `&dyn Comm`
[INFO] [stdout]   --> src/comm.rs:39:27
[INFO] [stdout]    |
[INFO] [stdout] 39 |         let shared = self.shared_secret.lock().await;
[INFO] [stdout]    |                           ^^^^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `shared_secret` on type `&dyn Comm`
[INFO] [stdout]   --> src/comm.rs:39:27
[INFO] [stdout]    |
[INFO] [stdout] 39 |         let shared = self.shared_secret.lock().await;
[INFO] [stdout]    |                           ^^^^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `peer_onion` on type `&dyn Comm`
[INFO] [stdout]   --> src/comm.rs:43:18
[INFO] [stdout]    |
[INFO] [stdout] 43 |             self.peer_onion.lock().await.as_ref().unwrap()
[INFO] [stdout]    |                  ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `peer_onion` on type `&dyn Comm`
[INFO] [stdout]   --> src/comm.rs:43:18
[INFO] [stdout]    |
[INFO] [stdout] 43 |             self.peer_onion.lock().await.as_ref().unwrap()
[INFO] [stdout]    |                  ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `client` on type `&dyn Comm`
[INFO] [stdout]   --> src/comm.rs:45:25
[INFO] [stdout]    |
[INFO] [stdout] 45 |         let resp = self.client.post(&url).body(encrypted).send().await?;
[INFO] [stdout]    |                         ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `client` on type `&dyn Comm`
[INFO] [stdout]   --> src/comm.rs:45:25
[INFO] [stdout]    |
[INFO] [stdout] 45 |         let resp = self.client.post(&url).body(encrypted).send().await?;
[INFO] [stdout]    |                         ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/comm.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |         deserialize(&dec)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^ expected `Result<Message, Error>`, found `Result<_, Box<ErrorKind>>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `Result<wallet::Message, anyhow::Error>`
[INFO] [stdout]               found enum `Result<_, Box<bincode::ErrorKind>>`
[INFO] [stdout] help: use the `?` operator to extract the `Result<_, Box<bincode::ErrorKind>>` value, propagating a `Result::Err` value to the caller
[INFO] [stdout]    |
[INFO] [stdout] 48 |         deserialize(&dec)?
[INFO] [stdout]    |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/comm.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |         deserialize(&dec)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^ expected `Result<Message, Error>`, found `Result<_, Box<ErrorKind>>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `Result<wallet::Message, anyhow::Error>`
[INFO] [stdout]               found enum `Result<_, Box<bincode::ErrorKind>>`
[INFO] [stdout] help: use the `?` operator to extract the `Result<_, Box<bincode::ErrorKind>>` value, propagating a `Result::Err` value to the caller
[INFO] [stdout]    |
[INFO] [stdout] 48 |         deserialize(&dec)?
[INFO] [stdout]    |                          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `peer_onion` on type `&dyn Comm`
[INFO] [stdout]   --> src/comm.rs:67:15
[INFO] [stdout]    |
[INFO] [stdout] 67 |         *self.peer_onion.lock().await = Some(onion);
[INFO] [stdout]    |               ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `peer_onion` on type `&dyn Comm`
[INFO] [stdout]   --> src/comm.rs:67:15
[INFO] [stdout]    |
[INFO] [stdout] 67 |         *self.peer_onion.lock().await = Some(onion);
[INFO] [stdout]    |               ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]   --> src/wallet.rs:91:33
[INFO] [stdout]    |
[INFO] [stdout] 91 |         if let Some(data_ser) = persister.load("wallet_data").await? {
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/persistence.rs:6:14
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub trait Persister: Send + Sync {
[INFO] [stdout]    |           --------- this trait is not dyn compatible...
[INFO] [stdout]  6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]    |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]  7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]    |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]    = help: consider moving `load` to another trait
[INFO] [stdout]    = help: consider moving `save` to another trait
[INFO] [stdout]    = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]   --> src/wallet.rs:91:33
[INFO] [stdout]    |
[INFO] [stdout] 91 |         if let Some(data_ser) = persister.load("wallet_data").await? {
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/persistence.rs:6:14
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub trait Persister: Send + Sync {
[INFO] [stdout]    |           --------- this trait is not dyn compatible...
[INFO] [stdout]  6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]    |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]  7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]    |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]    = help: consider moving `load` to another trait
[INFO] [stdout]    = help: consider moving `save` to another trait
[INFO] [stdout]    = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]   --> src/wallet.rs:91:21
[INFO] [stdout]    |
[INFO] [stdout] 91 |         if let Some(data_ser) = persister.load("wallet_data").await? {
[INFO] [stdout]    |                     ^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout]    = note: all local variables must have a statically known size
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]   --> src/wallet.rs:91:21
[INFO] [stdout]    |
[INFO] [stdout] 91 |         if let Some(data_ser) = persister.load("wallet_data").await? {
[INFO] [stdout]    |                     ^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout]    = note: all local variables must have a statically known size
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]   --> src/wallet.rs:91:16
[INFO] [stdout]    |
[INFO] [stdout] 91 |         if let Some(data_ser) = persister.load("wallet_data").await? {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by a bound in `Some`
[INFO] [stdout]   --> /rustc/818811b3cd1e0ff0d8ef20d5a4cf0b7c079929bc/library/core/src/option.rs:605:4
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]   --> src/wallet.rs:91:16
[INFO] [stdout]    |
[INFO] [stdout] 91 |         if let Some(data_ser) = persister.load("wallet_data").await? {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by a bound in `Some`
[INFO] [stdout]   --> /rustc/818811b3cd1e0ff0d8ef20d5a4cf0b7c079929bc/library/core/src/option.rs:605:4
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]   --> src/wallet.rs:91:33
[INFO] [stdout]    |
[INFO] [stdout] 91 |         if let Some(data_ser) = persister.load("wallet_data").await? {
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by an implicit `Sized` bound in `Option`
[INFO] [stdout]   --> /rustc/818811b3cd1e0ff0d8ef20d5a4cf0b7c079929bc/library/core/src/option.rs:597:0
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
[INFO] [stdout]   --> src/wallet.rs:91:33
[INFO] [stdout]    |
[INFO] [stdout] 91 |         if let Some(data_ser) = persister.load("wallet_data").await? {
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sized` is not implemented for `[u8]`
[INFO] [stdout] note: required by an implicit `Sized` bound in `Option`
[INFO] [stdout]   --> /rustc/818811b3cd1e0ff0d8ef20d5a4cf0b7c079929bc/library/core/src/option.rs:597:0
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `WalletData: serde::de::Deserialize<'_>` is not satisfied
[INFO] [stdout]    --> src/wallet.rs:92:36
[INFO] [stdout]     |
[INFO] [stdout]  92 |             let data: WalletData = deserialize(&data_ser)?;
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `serde::de::Deserialize<'_>` is not implemented for `WalletData`
[INFO] [stdout]    --> src/wallet.rs:63:1
[INFO] [stdout]     |
[INFO] [stdout]  63 | struct WalletData {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for local types consider adding `#[derive(serde::Deserialize)]` to your `WalletData` type
[INFO] [stdout]     = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]     = help: the following other types implement trait `serde::de::Deserialize<'de>`:
[INFO] [stdout]               &'a [u8]
[INFO] [stdout]               &'a serde_bytes::bytearray::ByteArray<N>
[INFO] [stdout]               &'a serde_bytes::bytes::Bytes
[INFO] [stdout]               &'a serde_json::raw::RawValue
[INFO] [stdout]               &'a std::path::Path
[INFO] [stdout]               &'a str
[INFO] [stdout]               ()
[INFO] [stdout]               (T,)
[INFO] [stdout]             and 327 others
[INFO] [stdout] note: required by a bound in `bincode::deserialize`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bincode-1.3.3/src/lib.rs:179:8
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub fn deserialize<'a, T>(bytes: &'a [u8]) -> Result<T>
[INFO] [stdout]     |        ----------- required by a bound in this function
[INFO] [stdout] 178 | where
[INFO] [stdout] 179 |     T: serde::de::Deserialize<'a>,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `deserialize`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `WalletData: serde::de::Deserialize<'_>` is not satisfied
[INFO] [stdout]    --> src/wallet.rs:92:36
[INFO] [stdout]     |
[INFO] [stdout]  92 |             let data: WalletData = deserialize(&data_ser)?;
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `serde::de::Deserialize<'_>` is not implemented for `WalletData`
[INFO] [stdout]    --> src/wallet.rs:63:1
[INFO] [stdout]     |
[INFO] [stdout]  63 | struct WalletData {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for local types consider adding `#[derive(serde::Deserialize)]` to your `WalletData` type
[INFO] [stdout]     = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]     = help: the following other types implement trait `serde::de::Deserialize<'de>`:
[INFO] [stdout]               &'a [u8]
[INFO] [stdout]               &'a serde_bytes::bytearray::ByteArray<N>
[INFO] [stdout]               &'a serde_bytes::bytes::Bytes
[INFO] [stdout]               &'a serde_json::raw::RawValue
[INFO] [stdout]               &'a std::path::Path
[INFO] [stdout]               &'a str
[INFO] [stdout]               ()
[INFO] [stdout]               (T,)
[INFO] [stdout]             and 327 others
[INFO] [stdout] note: required by a bound in `bincode::deserialize`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bincode-1.3.3/src/lib.rs:179:8
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub fn deserialize<'a, T>(bytes: &'a [u8]) -> Result<T>
[INFO] [stdout]     |        ----------- required by a bound in this function
[INFO] [stdout] 178 | where
[INFO] [stdout] 179 |     T: serde::de::Deserialize<'a>,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `deserialize`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Point: From<secp256k1::PublicKey>` is not satisfied
[INFO] [stdout]    --> src/wallet.rs:103:27
[INFO] [stdout]     |
[INFO] [stdout] 103 |             let agg_ctx = KeyAggContext::new(pubkeys)?;
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `From<secp256k1::PublicKey>` is not implemented for `Point`
[INFO] [stdout]     |
[INFO] [stdout] help: `Point` implements trait `From<T>`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/secp-0.6.0/src/points.rs:725:13
[INFO] [stdout]     |
[INFO] [stdout] 725 |             impl From<secp256k1::PublicKey> for Point {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `From<musig2::secp256k1::PublicKey>`
[INFO] [stdout] ...
[INFO] [stdout] 756 |             impl From<KeyAndParity> for Point {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `From<(musig2::secp256k1::XOnlyPublicKey, musig2::secp256k1::Parity)>`
[INFO] [stdout]     = note: required for `secp256k1::PublicKey` to implement `Into<Point>`
[INFO] [stdout] note: required by a bound in `KeyAggContext::new`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/musig2-0.3.1/src/key_agg.rs:96:12
[INFO] [stdout]     |
[INFO] [stdout]  93 |     pub fn new<I, P>(pubkeys: I) -> Result<Self, KeyAggError>
[INFO] [stdout]     |            --- required by a bound in this associated function
[INFO] [stdout] ...
[INFO] [stdout]  96 |         P: Into<Point>,
[INFO] [stdout]     |            ^^^^^^^^^^^ required by this bound in `KeyAggContext::new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:114:17
[INFO] [stdout]     |
[INFO] [stdout] 114 |                 persister,
[INFO] [stdout]     |                 ^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:115:23
[INFO] [stdout]     |
[INFO] [stdout] 115 |                 comm: Arc::new(TorComm::new()),
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^ `Comm` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/comm.rs:9:14
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub trait Comm {
[INFO] [stdout]     |           ---- this trait is not dyn compatible...
[INFO] [stdout]   9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]     |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout]  10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]     |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout]  11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]     |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]     = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]     = help: consider moving `send_message` to another trait
[INFO] [stdout]     = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:138:13
[INFO] [stdout]     |
[INFO] [stdout] 138 |             persister.save("wallet_data", &serialize(&data)?).await?;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Point: From<secp256k1::PublicKey>` is not satisfied
[INFO] [stdout]    --> src/wallet.rs:103:27
[INFO] [stdout]     |
[INFO] [stdout] 103 |             let agg_ctx = KeyAggContext::new(pubkeys)?;
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `From<secp256k1::PublicKey>` is not implemented for `Point`
[INFO] [stdout]     |
[INFO] [stdout] help: `Point` implements trait `From<T>`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/secp-0.6.0/src/points.rs:725:13
[INFO] [stdout]     |
[INFO] [stdout] 725 |             impl From<secp256k1::PublicKey> for Point {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `From<musig2::secp256k1::PublicKey>`
[INFO] [stdout] ...
[INFO] [stdout] 756 |             impl From<KeyAndParity> for Point {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `From<(musig2::secp256k1::XOnlyPublicKey, musig2::secp256k1::Parity)>`
[INFO] [stdout]     = note: required for `secp256k1::PublicKey` to implement `Into<Point>`
[INFO] [stdout] note: required by a bound in `KeyAggContext::new`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/musig2-0.3.1/src/key_agg.rs:96:12
[INFO] [stdout]     |
[INFO] [stdout]  93 |     pub fn new<I, P>(pubkeys: I) -> Result<Self, KeyAggError>
[INFO] [stdout]     |            --- required by a bound in this associated function
[INFO] [stdout] ...
[INFO] [stdout]  96 |         P: Into<Point>,
[INFO] [stdout]     |            ^^^^^^^^^^^ required by this bound in `KeyAggContext::new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:114:17
[INFO] [stdout]     |
[INFO] [stdout] 114 |                 persister,
[INFO] [stdout]     |                 ^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:115:23
[INFO] [stdout]     |
[INFO] [stdout] 115 |                 comm: Arc::new(TorComm::new()),
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^ `Comm` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/comm.rs:9:14
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub trait Comm {
[INFO] [stdout]     |           ---- this trait is not dyn compatible...
[INFO] [stdout]   9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]     |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout]  10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]     |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout]  11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]     |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]     = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]     = help: consider moving `send_message` to another trait
[INFO] [stdout]     = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `WalletData: serde::ser::Serialize` is not satisfied
[INFO] [stdout]    --> src/wallet.rs:138:54
[INFO] [stdout]     |
[INFO] [stdout] 138 |             persister.save("wallet_data", &serialize(&data)?).await?;
[INFO] [stdout]     |                                            --------- ^^^^^ unsatisfied trait bound
[INFO] [stdout]     |                                            |
[INFO] [stdout]     |                                            required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `serde::ser::Serialize` is not implemented for `WalletData`
[INFO] [stdout]    --> src/wallet.rs:63:1
[INFO] [stdout]     |
[INFO] [stdout]  63 | struct WalletData {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for local types consider adding `#[derive(serde::Serialize)]` to your `WalletData` type
[INFO] [stdout]     = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]     = help: the following other types implement trait `serde::ser::Serialize`:
[INFO] [stdout]               &'a T
[INFO] [stdout]               &'a mut T
[INFO] [stdout]               ()
[INFO] [stdout]               (T,)
[INFO] [stdout]               (T0, T1)
[INFO] [stdout]               (T0, T1, T2)
[INFO] [stdout]               (T0, T1, T2, T3)
[INFO] [stdout]               (T0, T1, T2, T3, T4)
[INFO] [stdout]             and 336 others
[INFO] [stdout] note: required by a bound in `bincode::serialize`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bincode-1.3.3/src/lib.rs:108:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn serialize<T: ?Sized>(value: &T) -> Result<Vec<u8>>
[INFO] [stdout]     |        --------- required by a bound in this function
[INFO] [stdout] 107 | where
[INFO] [stdout] 108 |     T: serde::Serialize,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^ required by this bound in `serialize`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:138:13
[INFO] [stdout]     |
[INFO] [stdout] 138 |             persister.save("wallet_data", &serialize(&data)?).await?;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:140:17
[INFO] [stdout]     |
[INFO] [stdout] 140 |                 persister,
[INFO] [stdout]     |                 ^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:141:23
[INFO] [stdout]     |
[INFO] [stdout] 141 |                 comm: Arc::new(TorComm::new()),
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^ `Comm` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/comm.rs:9:14
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub trait Comm {
[INFO] [stdout]     |           ---- this trait is not dyn compatible...
[INFO] [stdout]   9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]     |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout]  10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]     |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout]  11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]     |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]     = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]     = help: consider moving `send_message` to another trait
[INFO] [stdout]     = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:157:24
[INFO] [stdout]     |
[INFO] [stdout] 157 |         let response = self.comm.get_pubkeys(peer_onion).await?;
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Comm` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/comm.rs:9:14
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub trait Comm {
[INFO] [stdout]     |           ---- this trait is not dyn compatible...
[INFO] [stdout]   9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]     |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout]  10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]     |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout]  11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]     |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]     = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]     = help: consider moving `send_message` to another trait
[INFO] [stdout]     = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: `?` operator has incompatible types
[INFO] [stdout]    --> src/wallet.rs:159:43
[INFO] [stdout]     |
[INFO] [stdout] 159 |         let peer_enc_pk_bytes: [u8; 32] = hex::decode(response["enc_pk"])?;
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `[u8; 32]`, found `Vec<u8>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `?` operator cannot convert from `Vec<u8>` to `[u8; 32]`
[INFO] [stdout]     = note: expected array `[u8; 32]`
[INFO] [stdout]               found struct `Vec<u8>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `WalletData: serde::ser::Serialize` is not satisfied
[INFO] [stdout]    --> src/wallet.rs:138:54
[INFO] [stdout]     |
[INFO] [stdout] 138 |             persister.save("wallet_data", &serialize(&data)?).await?;
[INFO] [stdout]     |                                            --------- ^^^^^ unsatisfied trait bound
[INFO] [stdout]     |                                            |
[INFO] [stdout]     |                                            required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `serde::ser::Serialize` is not implemented for `WalletData`
[INFO] [stdout]    --> src/wallet.rs:63:1
[INFO] [stdout]     |
[INFO] [stdout]  63 | struct WalletData {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for local types consider adding `#[derive(serde::Serialize)]` to your `WalletData` type
[INFO] [stdout]     = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]     = help: the following other types implement trait `serde::ser::Serialize`:
[INFO] [stdout]               &'a T
[INFO] [stdout]               &'a mut T
[INFO] [stdout]               ()
[INFO] [stdout]               (T,)
[INFO] [stdout]               (T0, T1)
[INFO] [stdout]               (T0, T1, T2)
[INFO] [stdout]               (T0, T1, T2, T3)
[INFO] [stdout]               (T0, T1, T2, T3, T4)
[INFO] [stdout]             and 336 others
[INFO] [stdout] note: required by a bound in `bincode::serialize`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bincode-1.3.3/src/lib.rs:108:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn serialize<T: ?Sized>(value: &T) -> Result<Vec<u8>>
[INFO] [stdout]     |        --------- required by a bound in this function
[INFO] [stdout] 107 | where
[INFO] [stdout] 108 |     T: serde::Serialize,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^ required by this bound in `serialize`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:140:17
[INFO] [stdout]     |
[INFO] [stdout] 140 |                 persister,
[INFO] [stdout]     |                 ^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:141:23
[INFO] [stdout]     |
[INFO] [stdout] 141 |                 comm: Arc::new(TorComm::new()),
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^ `Comm` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/comm.rs:9:14
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub trait Comm {
[INFO] [stdout]     |           ---- this trait is not dyn compatible...
[INFO] [stdout]   9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]     |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout]  10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]     |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout]  11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]     |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]     = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]     = help: consider moving `send_message` to another trait
[INFO] [stdout]     = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:182:37
[INFO] [stdout]     |
[INFO] [stdout] 182 |         let mut data = deserialize(&self.persister.load("wallet_data").await?.unwrap())?;
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:185:9
[INFO] [stdout]     |
[INFO] [stdout] 185 | /         self.persister
[INFO] [stdout] 186 | |             .save("wallet_data", &serialize(&data)?)
[INFO] [stdout]     | |____________________________________________________^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:157:24
[INFO] [stdout]     |
[INFO] [stdout] 157 |         let response = self.comm.get_pubkeys(peer_onion).await?;
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Comm` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/comm.rs:9:14
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub trait Comm {
[INFO] [stdout]     |           ---- this trait is not dyn compatible...
[INFO] [stdout]   9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]     |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout]  10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]     |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout]  11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]     |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]     = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]     = help: consider moving `send_message` to another trait
[INFO] [stdout]     = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `hex` in this scope
[INFO] [stdout]    --> src/wallet.rs:159:43
[INFO] [stdout]     |
[INFO] [stdout] 159 |         let peer_enc_pk_bytes: [u8; 32] = hex::decode(response["enc_pk"])?;
[INFO] [stdout]     |                                           ^^^ use of unresolved module or unlinked crate `hex`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `hex`, use `cargo add hex` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:189:9
[INFO] [stdout]     |
[INFO] [stdout] 189 |         self.comm.set_peer_onion(peer_onion).await;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Comm` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/comm.rs:9:14
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub trait Comm {
[INFO] [stdout]     |           ---- this trait is not dyn compatible...
[INFO] [stdout]   9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]     |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout]  10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]     |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout]  11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]     |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]     = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]     = help: consider moving `send_message` to another trait
[INFO] [stdout]     = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:182:37
[INFO] [stdout]     |
[INFO] [stdout] 182 |         let mut data = deserialize(&self.persister.load("wallet_data").await?.unwrap())?;
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:185:9
[INFO] [stdout]     |
[INFO] [stdout] 185 | /         self.persister
[INFO] [stdout] 186 | |             .save("wallet_data", &serialize(&data)?)
[INFO] [stdout]     | |____________________________________________________^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:189:9
[INFO] [stdout]     |
[INFO] [stdout] 189 |         self.comm.set_peer_onion(peer_onion).await;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Comm` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/comm.rs:9:14
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub trait Comm {
[INFO] [stdout]     |           ---- this trait is not dyn compatible...
[INFO] [stdout]   9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]     |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout]  10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]     |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout]  11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]     |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]     = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]     = help: consider moving `send_message` to another trait
[INFO] [stdout]     = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/wallet.rs:189:34
[INFO] [stdout]     |
[INFO] [stdout] 189 |         self.comm.set_peer_onion(peer_onion).await;
[INFO] [stdout]     |                   -------------- ^^^^^^^^^^ expected `String`, found `&str`
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/comm.rs:11:14
[INFO] [stdout]     |
[INFO] [stdout]  11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]     |              ^^^^^^^^^^^^^^        -----
[INFO] [stdout] help: try using a conversion method
[INFO] [stdout]     |
[INFO] [stdout] 189 |         self.comm.set_peer_onion(peer_onion.to_string()).await;
[INFO] [stdout]     |                                            ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:209:37
[INFO] [stdout]     |
[INFO] [stdout] 209 |         let mut data = deserialize(&self.persister.load("wallet_data").await?.unwrap())?;
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:211:9
[INFO] [stdout]     |
[INFO] [stdout] 211 | /         self.persister
[INFO] [stdout] 212 | |             .save("wallet_data", &serialize(&data)?)
[INFO] [stdout]     | |____________________________________________________^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/wallet.rs:189:34
[INFO] [stdout]     |
[INFO] [stdout] 189 |         self.comm.set_peer_onion(peer_onion).await;
[INFO] [stdout]     |                   -------------- ^^^^^^^^^^ expected `String`, found `&str`
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/comm.rs:11:14
[INFO] [stdout]     |
[INFO] [stdout]  11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]     |              ^^^^^^^^^^^^^^        -----
[INFO] [stdout] help: try using a conversion method
[INFO] [stdout]     |
[INFO] [stdout] 189 |         self.comm.set_peer_onion(peer_onion.to_string()).await;
[INFO] [stdout]     |                                            ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `WalletData: serde::de::Deserialize<'_>` is not satisfied
[INFO] [stdout]    --> src/wallet.rs:218:34
[INFO] [stdout]     |
[INFO] [stdout] 218 |         let data = deserialize::<WalletData>(&self.persister.load("wallet_data").await?.unwrap())?;
[INFO] [stdout]     |                                  ^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `serde::de::Deserialize<'_>` is not implemented for `WalletData`
[INFO] [stdout]    --> src/wallet.rs:63:1
[INFO] [stdout]     |
[INFO] [stdout]  63 | struct WalletData {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for local types consider adding `#[derive(serde::Deserialize)]` to your `WalletData` type
[INFO] [stdout]     = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]     = help: the following other types implement trait `serde::de::Deserialize<'de>`:
[INFO] [stdout]               &'a [u8]
[INFO] [stdout]               &'a serde_bytes::bytearray::ByteArray<N>
[INFO] [stdout]               &'a serde_bytes::bytes::Bytes
[INFO] [stdout]               &'a serde_json::raw::RawValue
[INFO] [stdout]               &'a std::path::Path
[INFO] [stdout]               &'a str
[INFO] [stdout]               ()
[INFO] [stdout]               (T,)
[INFO] [stdout]             and 327 others
[INFO] [stdout] note: required by a bound in `bincode::deserialize`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bincode-1.3.3/src/lib.rs:179:8
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub fn deserialize<'a, T>(bytes: &'a [u8]) -> Result<T>
[INFO] [stdout]     |        ----------- required by a bound in this function
[INFO] [stdout] 178 | where
[INFO] [stdout] 179 |     T: serde::de::Deserialize<'a>,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `deserialize`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:218:47
[INFO] [stdout]     |
[INFO] [stdout] 218 |         let data = deserialize::<WalletData>(&self.persister.load("wallet_data").await?.unwrap())?;
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:209:37
[INFO] [stdout]     |
[INFO] [stdout] 209 |         let mut data = deserialize(&self.persister.load("wallet_data").await?.unwrap())?;
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:211:9
[INFO] [stdout]     |
[INFO] [stdout] 211 | /         self.persister
[INFO] [stdout] 212 | |             .save("wallet_data", &serialize(&data)?)
[INFO] [stdout]     | |____________________________________________________^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `WalletData: serde::de::Deserialize<'_>` is not satisfied
[INFO] [stdout]    --> src/wallet.rs:236:34
[INFO] [stdout]     |
[INFO] [stdout] 236 |         let data = deserialize::<WalletData>(&self.persister.load("wallet_data").await?.unwrap())?;
[INFO] [stdout]     |                                  ^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `serde::de::Deserialize<'_>` is not implemented for `WalletData`
[INFO] [stdout]    --> src/wallet.rs:63:1
[INFO] [stdout]     |
[INFO] [stdout]  63 | struct WalletData {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for local types consider adding `#[derive(serde::Deserialize)]` to your `WalletData` type
[INFO] [stdout]     = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]     = help: the following other types implement trait `serde::de::Deserialize<'de>`:
[INFO] [stdout]               &'a [u8]
[INFO] [stdout]               &'a serde_bytes::bytearray::ByteArray<N>
[INFO] [stdout]               &'a serde_bytes::bytes::Bytes
[INFO] [stdout]               &'a serde_json::raw::RawValue
[INFO] [stdout]               &'a std::path::Path
[INFO] [stdout]               &'a str
[INFO] [stdout]               ()
[INFO] [stdout]               (T,)
[INFO] [stdout]             and 327 others
[INFO] [stdout] note: required by a bound in `bincode::deserialize`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bincode-1.3.3/src/lib.rs:179:8
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub fn deserialize<'a, T>(bytes: &'a [u8]) -> Result<T>
[INFO] [stdout]     |        ----------- required by a bound in this function
[INFO] [stdout] 178 | where
[INFO] [stdout] 179 |     T: serde::de::Deserialize<'a>,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `deserialize`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:236:47
[INFO] [stdout]     |
[INFO] [stdout] 236 |         let data = deserialize::<WalletData>(&self.persister.load("wallet_data").await?.unwrap())?;
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `WalletData: serde::de::Deserialize<'_>` is not satisfied
[INFO] [stdout]    --> src/wallet.rs:242:34
[INFO] [stdout]     |
[INFO] [stdout] 242 |         let data = deserialize::<WalletData>(&self.persister.load("wallet_data").await?.unwrap())?;
[INFO] [stdout]     |                                  ^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `serde::de::Deserialize<'_>` is not implemented for `WalletData`
[INFO] [stdout]    --> src/wallet.rs:63:1
[INFO] [stdout]     |
[INFO] [stdout]  63 | struct WalletData {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for local types consider adding `#[derive(serde::Deserialize)]` to your `WalletData` type
[INFO] [stdout]     = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]     = help: the following other types implement trait `serde::de::Deserialize<'de>`:
[INFO] [stdout]               &'a [u8]
[INFO] [stdout]               &'a serde_bytes::bytearray::ByteArray<N>
[INFO] [stdout]               &'a serde_bytes::bytes::Bytes
[INFO] [stdout]               &'a serde_json::raw::RawValue
[INFO] [stdout]               &'a std::path::Path
[INFO] [stdout]               &'a str
[INFO] [stdout]               ()
[INFO] [stdout]               (T,)
[INFO] [stdout]             and 327 others
[INFO] [stdout] note: required by a bound in `bincode::deserialize`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bincode-1.3.3/src/lib.rs:179:8
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub fn deserialize<'a, T>(bytes: &'a [u8]) -> Result<T>
[INFO] [stdout]     |        ----------- required by a bound in this function
[INFO] [stdout] 178 | where
[INFO] [stdout] 179 |     T: serde::de::Deserialize<'a>,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `deserialize`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:242:47
[INFO] [stdout]     |
[INFO] [stdout] 242 |         let data = deserialize::<WalletData>(&self.persister.load("wallet_data").await?.unwrap())?;
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `WalletData: serde::de::Deserialize<'_>` is not satisfied
[INFO] [stdout]    --> src/wallet.rs:218:34
[INFO] [stdout]     |
[INFO] [stdout] 218 |         let data = deserialize::<WalletData>(&self.persister.load("wallet_data").await?.unwrap())?;
[INFO] [stdout]     |                                  ^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `serde::de::Deserialize<'_>` is not implemented for `WalletData`
[INFO] [stdout]    --> src/wallet.rs:63:1
[INFO] [stdout]     |
[INFO] [stdout]  63 | struct WalletData {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for local types consider adding `#[derive(serde::Deserialize)]` to your `WalletData` type
[INFO] [stdout]     = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]     = help: the following other types implement trait `serde::de::Deserialize<'de>`:
[INFO] [stdout]               &'a [u8]
[INFO] [stdout]               &'a serde_bytes::bytearray::ByteArray<N>
[INFO] [stdout]               &'a serde_bytes::bytes::Bytes
[INFO] [stdout]               &'a serde_json::raw::RawValue
[INFO] [stdout]               &'a std::path::Path
[INFO] [stdout]               &'a str
[INFO] [stdout]               ()
[INFO] [stdout]               (T,)
[INFO] [stdout]             and 327 others
[INFO] [stdout] note: required by a bound in `bincode::deserialize`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bincode-1.3.3/src/lib.rs:179:8
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub fn deserialize<'a, T>(bytes: &'a [u8]) -> Result<T>
[INFO] [stdout]     |        ----------- required by a bound in this function
[INFO] [stdout] 178 | where
[INFO] [stdout] 179 |     T: serde::de::Deserialize<'a>,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `deserialize`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:218:47
[INFO] [stdout]     |
[INFO] [stdout] 218 |         let data = deserialize::<WalletData>(&self.persister.load("wallet_data").await?.unwrap())?;
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/wallet.rs:252:22
[INFO] [stdout]     |
[INFO] [stdout] 252 |             version: 2,
[INFO] [stdout]     |                      ^ expected `Version`, found integer
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `bitcoin::transaction::Version`
[INFO] [stdout]     |
[INFO] [stdout] 252 |             version: bitcoin::transaction::Version(2),
[INFO] [stdout]     |                      ++++++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/wallet.rs:256:29
[INFO] [stdout]     |
[INFO] [stdout] 256 |                 script_sig: Script::new(),
[INFO] [stdout]     |                             ^^^^^^^^^^^^^ expected `ScriptBuf`, found `&Script`
[INFO] [stdout]     |
[INFO] [stdout] help: call `Into::into` on this expression to convert `&'static bitcoin::Script` into `ScriptBuf`
[INFO] [stdout]     |
[INFO] [stdout] 256 |                 script_sig: Script::new().into(),
[INFO] [stdout]     |                                          +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `musig2::secp::Scalar: From<secp256k1::SecretKey>` is not satisfied
[INFO] [stdout]    --> src/wallet.rs:284:30
[INFO] [stdout]     |
[INFO] [stdout] 284 |                 .with_seckey(self.btc_sk)
[INFO] [stdout]     |                  ----------- ^^^^^^^^^^^ the trait `From<secp256k1::SecretKey>` is not implemented for `musig2::secp::Scalar`
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: `musig2::secp::Scalar` implements trait `From<T>`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/secp-0.6.0/src/scalars.rs:819:13
[INFO] [stdout]     |
[INFO] [stdout] 819 |             impl From<secp256k1::SecretKey> for Scalar {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `From<musig2::secp256k1::SecretKey>`
[INFO] [stdout] ...
[INFO] [stdout] 848 |             impl From<secp256k1::Scalar> for Scalar {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `From<musig2::secp256k1::Scalar>`
[INFO] [stdout]     = note: required for `secp256k1::SecretKey` to implement `Into<musig2::secp::Scalar>`
[INFO] [stdout] note: required by a bound in `SecNonceSpices::<'ns>::with_seckey`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/musig2-0.3.1/src/nonces.rs:94:43
[INFO] [stdout]     |
[INFO] [stdout]  94 |     pub fn with_seckey(self, seckey: impl Into<Scalar>) -> SecNonceSpices<'ns> {
[INFO] [stdout]     |                                           ^^^^^^^^^^^^ required by this bound in `SecNonceSpices::<'ns>::with_seckey`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `WalletData: serde::de::Deserialize<'_>` is not satisfied
[INFO] [stdout]    --> src/wallet.rs:236:34
[INFO] [stdout]     |
[INFO] [stdout] 236 |         let data = deserialize::<WalletData>(&self.persister.load("wallet_data").await?.unwrap())?;
[INFO] [stdout]     |                                  ^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `serde::de::Deserialize<'_>` is not implemented for `WalletData`
[INFO] [stdout]    --> src/wallet.rs:63:1
[INFO] [stdout]     |
[INFO] [stdout]  63 | struct WalletData {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for local types consider adding `#[derive(serde::Deserialize)]` to your `WalletData` type
[INFO] [stdout]     = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]     = help: the following other types implement trait `serde::de::Deserialize<'de>`:
[INFO] [stdout]               &'a [u8]
[INFO] [stdout]               &'a serde_bytes::bytearray::ByteArray<N>
[INFO] [stdout]               &'a serde_bytes::bytes::Bytes
[INFO] [stdout]               &'a serde_json::raw::RawValue
[INFO] [stdout]               &'a std::path::Path
[INFO] [stdout]               &'a str
[INFO] [stdout]               ()
[INFO] [stdout]               (T,)
[INFO] [stdout]             and 327 others
[INFO] [stdout] note: required by a bound in `bincode::deserialize`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bincode-1.3.3/src/lib.rs:179:8
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub fn deserialize<'a, T>(bytes: &'a [u8]) -> Result<T>
[INFO] [stdout]     |        ----------- required by a bound in this function
[INFO] [stdout] 178 | where
[INFO] [stdout] 179 |     T: serde::de::Deserialize<'a>,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `deserialize`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:236:47
[INFO] [stdout]     |
[INFO] [stdout] 236 |         let data = deserialize::<WalletData>(&self.persister.load("wallet_data").await?.unwrap())?;
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `WalletData: serde::de::Deserialize<'_>` is not satisfied
[INFO] [stdout]    --> src/wallet.rs:242:34
[INFO] [stdout]     |
[INFO] [stdout] 242 |         let data = deserialize::<WalletData>(&self.persister.load("wallet_data").await?.unwrap())?;
[INFO] [stdout]     |                                  ^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `serde::de::Deserialize<'_>` is not implemented for `WalletData`
[INFO] [stdout]    --> src/wallet.rs:63:1
[INFO] [stdout]     |
[INFO] [stdout]  63 | struct WalletData {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for local types consider adding `#[derive(serde::Deserialize)]` to your `WalletData` type
[INFO] [stdout]     = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]     = help: the following other types implement trait `serde::de::Deserialize<'de>`:
[INFO] [stdout]               &'a [u8]
[INFO] [stdout]               &'a serde_bytes::bytearray::ByteArray<N>
[INFO] [stdout]               &'a serde_bytes::bytes::Bytes
[INFO] [stdout]               &'a serde_json::raw::RawValue
[INFO] [stdout]               &'a std::path::Path
[INFO] [stdout]               &'a str
[INFO] [stdout]               ()
[INFO] [stdout]               (T,)
[INFO] [stdout]             and 327 others
[INFO] [stdout] note: required by a bound in `bincode::deserialize`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bincode-1.3.3/src/lib.rs:179:8
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub fn deserialize<'a, T>(bytes: &'a [u8]) -> Result<T>
[INFO] [stdout]     |        ----------- required by a bound in this function
[INFO] [stdout] 178 | where
[INFO] [stdout] 179 |     T: serde::de::Deserialize<'a>,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `deserialize`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:242:47
[INFO] [stdout]     |
[INFO] [stdout] 242 |         let data = deserialize::<WalletData>(&self.persister.load("wallet_data").await?.unwrap())?;
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/persistence.rs:6:14
[INFO] [stdout]     |
[INFO] [stdout]   5 | pub trait Persister: Send + Sync {
[INFO] [stdout]     |           --------- this trait is not dyn compatible...
[INFO] [stdout]   6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]     |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]   7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]     |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]     = help: consider moving `load` to another trait
[INFO] [stdout]     = help: consider moving `save` to another trait
[INFO] [stdout]     = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]     = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/wallet.rs:252:22
[INFO] [stdout]     |
[INFO] [stdout] 252 |             version: 2,
[INFO] [stdout]     |                      ^ expected `Version`, found integer
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `bitcoin::transaction::Version`
[INFO] [stdout]     |
[INFO] [stdout] 252 |             version: bitcoin::transaction::Version(2),
[INFO] [stdout]     |                      ++++++++++++++++++++++++++++++ +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/wallet.rs:256:29
[INFO] [stdout]     |
[INFO] [stdout] 256 |                 script_sig: Script::new(),
[INFO] [stdout]     |                             ^^^^^^^^^^^^^ expected `ScriptBuf`, found `&Script`
[INFO] [stdout]     |
[INFO] [stdout] help: call `Into::into` on this expression to convert `&'static bitcoin::Script` into `ScriptBuf`
[INFO] [stdout]     |
[INFO] [stdout] 256 |                 script_sig: Script::new().into(),
[INFO] [stdout]     |                                          +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `musig2::secp::Scalar: From<secp256k1::SecretKey>` is not satisfied
[INFO] [stdout]    --> src/wallet.rs:284:30
[INFO] [stdout]     |
[INFO] [stdout] 284 |                 .with_seckey(self.btc_sk)
[INFO] [stdout]     |                  ----------- ^^^^^^^^^^^ the trait `From<secp256k1::SecretKey>` is not implemented for `musig2::secp::Scalar`
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: `musig2::secp::Scalar` implements trait `From<T>`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/secp-0.6.0/src/scalars.rs:819:13
[INFO] [stdout]     |
[INFO] [stdout] 819 |             impl From<secp256k1::SecretKey> for Scalar {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `From<musig2::secp256k1::SecretKey>`
[INFO] [stdout] ...
[INFO] [stdout] 848 |             impl From<secp256k1::Scalar> for Scalar {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `From<musig2::secp256k1::Scalar>`
[INFO] [stdout]     = note: required for `secp256k1::SecretKey` to implement `Into<musig2::secp::Scalar>`
[INFO] [stdout] note: required by a bound in `SecNonceSpices::<'ns>::with_seckey`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/musig2-0.3.1/src/nonces.rs:94:43
[INFO] [stdout]     |
[INFO] [stdout]  94 |     pub fn with_seckey(self, seckey: impl Into<Scalar>) -> SecNonceSpices<'ns> {
[INFO] [stdout]     |                                           ^^^^^^^^^^^^ required by this bound in `SecNonceSpices::<'ns>::with_seckey`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `to_vec` found for struct `TapSighash` in the current scope
[INFO] [stdout]    --> src/wallet.rs:290:34
[INFO] [stdout]     |
[INFO] [stdout] 290 |             sighash_ser: sighash.to_vec(),
[INFO] [stdout]     |                                  ^^^^^^ method not found in `TapSighash`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bitcoin::Transaction::txid`: txid has been renamed to compute_txid to note that it's computationally expensive.  use compute_txid() instead.
[INFO] [stdout]    --> src/wallet.rs:292:22
[INFO] [stdout]     |
[INFO] [stdout] 292 |             txid: tx.txid(),
[INFO] [stdout]     |                      ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:294:24
[INFO] [stdout]     |
[INFO] [stdout] 294 |         let response = self.comm.send_message(msg).await?;
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Comm` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/comm.rs:9:14
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub trait Comm {
[INFO] [stdout]     |           ---- this trait is not dyn compatible...
[INFO] [stdout]   9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]     |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout]  10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]     |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout]  11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]     |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]     = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]     = help: consider moving `send_message` to another trait
[INFO] [stdout]     = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `begin_signing` found for struct `FirstRound` in the current scope
[INFO] [stdout]    --> src/wallet.rs:303:38
[INFO] [stdout]     |
[INFO] [stdout] 303 |             let second = first_round.begin_signing()?;
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^ method not found in `FirstRound`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bitcoin::Transaction::txid`: txid has been renamed to compute_txid to note that it's computationally expensive.  use compute_txid() instead.
[INFO] [stdout]    --> src/wallet.rs:306:26
[INFO] [stdout]     |
[INFO] [stdout] 306 |                 txid: tx.txid(),
[INFO] [stdout]     |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:309:29
[INFO] [stdout]     |
[INFO] [stdout] 309 |             let response2 = self.comm.send_message(msg2).await?;
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Comm` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/comm.rs:9:14
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub trait Comm {
[INFO] [stdout]     |           ---- this trait is not dyn compatible...
[INFO] [stdout]   9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]     |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout]  10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]     |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout]  11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]     |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]     = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]     = help: consider moving `send_message` to another trait
[INFO] [stdout]     = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `musig2::secp::Scalar: From<secp256k1::SecretKey>` is not satisfied
[INFO] [stdout]    --> src/wallet.rs:354:34
[INFO] [stdout]     |
[INFO] [stdout] 354 |                     .with_seckey(self.btc_sk)
[INFO] [stdout]     |                      ----------- ^^^^^^^^^^^ the trait `From<secp256k1::SecretKey>` is not implemented for `musig2::secp::Scalar`
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: `musig2::secp::Scalar` implements trait `From<T>`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/secp-0.6.0/src/scalars.rs:819:13
[INFO] [stdout]     |
[INFO] [stdout] 819 |             impl From<secp256k1::SecretKey> for Scalar {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `From<musig2::secp256k1::SecretKey>`
[INFO] [stdout] ...
[INFO] [stdout] 848 |             impl From<secp256k1::Scalar> for Scalar {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `From<musig2::secp256k1::Scalar>`
[INFO] [stdout]     = note: required for `secp256k1::SecretKey` to implement `Into<musig2::secp::Scalar>`
[INFO] [stdout] note: required by a bound in `SecNonceSpices::<'ns>::with_seckey`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/musig2-0.3.1/src/nonces.rs:94:43
[INFO] [stdout]     |
[INFO] [stdout]  94 |     pub fn with_seckey(self, seckey: impl Into<Scalar>) -> SecNonceSpices<'ns> {
[INFO] [stdout]     |                                           ^^^^^^^^^^^^ required by this bound in `SecNonceSpices::<'ns>::with_seckey`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0614]: type `PubNonce` cannot be dereferenced
[INFO] [stdout]    --> src/wallet.rs:357:63
[INFO] [stdout]     |
[INFO] [stdout] 357 |             first_round.receive_nonce(1 - state.signer_index, *proposer_nonce)?;
[INFO] [stdout]     |                                                               ^^^^^^^^^^^^^^^ can't be dereferenced
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `begin_signing` found for struct `FirstRound` in the current scope
[INFO] [stdout]    --> src/wallet.rs:359:38
[INFO] [stdout]     |
[INFO] [stdout] 359 |             let second = first_round.begin_signing()?;
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^ method not found in `FirstRound`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]   --> src/wallet.rs:81:24
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub persister: Arc<dyn Persister>,
[INFO] [stdout]    |                        ^^^^^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/persistence.rs:6:14
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub trait Persister: Send + Sync {
[INFO] [stdout]    |           --------- this trait is not dyn compatible...
[INFO] [stdout]  6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]    |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]  7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]    |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]    = help: consider moving `load` to another trait
[INFO] [stdout]    = help: consider moving `save` to another trait
[INFO] [stdout]    = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]   --> src/wallet.rs:82:19
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub comm: Arc<dyn Comm>,
[INFO] [stdout]    |                   ^^^^^^^^ `Comm` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/comm.rs:9:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Comm {
[INFO] [stdout]    |           ---- this trait is not dyn compatible...
[INFO] [stdout]  9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]    |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout] 10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]    |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout] 11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]    |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]    = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]    = help: consider moving `send_message` to another trait
[INFO] [stdout]    = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]   --> src/comm.rs:31:27
[INFO] [stdout]    |
[INFO] [stdout] 31 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>> {
[INFO] [stdout]    |                           ^^^^ `Comm` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/comm.rs:9:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Comm {
[INFO] [stdout]    |           ---- this trait is not dyn compatible...
[INFO] [stdout]  9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]    |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout] 10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]    |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout] 11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]    |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]    = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]    = help: consider moving `send_message` to another trait
[INFO] [stdout]    = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]   --> src/comm.rs:37:28
[INFO] [stdout]    |
[INFO] [stdout] 37 |     async fn send_message(&self, msg: Message) -> Result<Message> {
[INFO] [stdout]    |                            ^^^^ `Comm` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/comm.rs:9:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Comm {
[INFO] [stdout]    |           ---- this trait is not dyn compatible...
[INFO] [stdout]  9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]    |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout] 10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]    |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout] 11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]    |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]    = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]    = help: consider moving `send_message` to another trait
[INFO] [stdout]    = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]   --> src/comm.rs:51:21
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub fn encrypt(&self, data: &[u8], shared_secret: &[u8; 32]) -> Result<Vec<u8>> {
[INFO] [stdout]    |                     ^^^^ `Comm` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/comm.rs:9:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Comm {
[INFO] [stdout]    |           ---- this trait is not dyn compatible...
[INFO] [stdout]  9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]    |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout] 10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]    |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout] 11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]    |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]    = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]    = help: consider moving `send_message` to another trait
[INFO] [stdout]    = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]   --> src/comm.rs:60:28
[INFO] [stdout]    |
[INFO] [stdout] 60 |     pub(crate) fn decrypt(&self, encrypted: &[u8], shared_secret: &[u8; 32]) -> Result<Vec<u8>> {
[INFO] [stdout]    |                            ^^^^ `Comm` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/comm.rs:9:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Comm {
[INFO] [stdout]    |           ---- this trait is not dyn compatible...
[INFO] [stdout]  9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]    |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout] 10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]    |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout] 11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]    |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]    = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]    = help: consider moving `send_message` to another trait
[INFO] [stdout]    = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]   --> src/comm.rs:66:30
[INFO] [stdout]    |
[INFO] [stdout] 66 |     async fn set_peer_onion(&self, onion: String) {
[INFO] [stdout]    |                              ^^^^ `Comm` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/comm.rs:9:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Comm {
[INFO] [stdout]    |           ---- this trait is not dyn compatible...
[INFO] [stdout]  9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]    |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout] 10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]    |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout] 11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]    |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]    = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]    = help: consider moving `send_message` to another trait
[INFO] [stdout]    = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]   --> src/wallet.rs:90:45
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub async fn load_or_new(persister: Arc<dyn Persister>) -> Result<Self> {
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/persistence.rs:6:14
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub trait Persister: Send + Sync {
[INFO] [stdout]    |           --------- this trait is not dyn compatible...
[INFO] [stdout]  6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]    |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]  7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]    |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]    = help: consider moving `load` to another trait
[INFO] [stdout]    = help: consider moving `save` to another trait
[INFO] [stdout]    = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] help: you might have meant to use `Self` to refer to the implementing type
[INFO] [stdout]    |
[INFO] [stdout] 90 -     pub async fn load_or_new(persister: Arc<dyn Persister>) -> Result<Self> {
[INFO] [stdout] 90 +     pub async fn load_or_new(persister: Arc<Self>) -> Result<Self> {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `HashMap<std::string::String, std::string::String>: ToSchema<'_>` is not satisfied
[INFO] [stdout]    --> src/api.rs:22:24
[INFO] [stdout]     |
[INFO] [stdout]  22 |     components(schemas(HashMap<String, String>, Bytes)),
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^ the trait `ToSchema<'_>` is not implemented for `HashMap<std::string::String, std::string::String>`
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `ToSchema<'__s>` is implemented for `()`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/utoipa-4.2.3/src/lib.rs:413:1
[INFO] [stdout]     |
[INFO] [stdout] 413 | impl<'__s> ToSchema<'__s> for TupleUnit {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ComponentsBuilder::schema_from`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/utoipa-4.2.3/src/openapi/schema.rs:138:31
[INFO] [stdout]     |
[INFO] [stdout] 138 |     pub fn schema_from<'s, I: ToSchema<'s>>(mut self) -> Self {
[INFO] [stdout]     |                               ^^^^^^^^^^^^ required by this bound in `ComponentsBuilder::schema_from`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `axum::body::Bytes: ToSchema<'_>` is not satisfied
[INFO] [stdout]    --> src/api.rs:22:49
[INFO] [stdout]     |
[INFO] [stdout]  22 |     components(schemas(HashMap<String, String>, Bytes)),
[INFO] [stdout]     |                                                 ^^^^^ the trait `ToSchema<'_>` is not implemented for `axum::body::Bytes`
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `ToSchema<'__s>` is implemented for `()`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/utoipa-4.2.3/src/lib.rs:413:1
[INFO] [stdout]     |
[INFO] [stdout] 413 | impl<'__s> ToSchema<'__s> for TupleUnit {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ComponentsBuilder::schema_from`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/utoipa-4.2.3/src/openapi/schema.rs:138:31
[INFO] [stdout]     |
[INFO] [stdout] 138 |     pub fn schema_from<'s, I: ToSchema<'s>>(mut self) -> Self {
[INFO] [stdout]     |                               ^^^^^^^^^^^^ required by this bound in `ComponentsBuilder::schema_from`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `to_vec` found for struct `TapSighash` in the current scope
[INFO] [stdout]    --> src/wallet.rs:290:34
[INFO] [stdout]     |
[INFO] [stdout] 290 |             sighash_ser: sighash.to_vec(),
[INFO] [stdout]     |                                  ^^^^^^ method not found in `TapSighash`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bitcoin::Transaction::txid`: txid has been renamed to compute_txid to note that it's computationally expensive.  use compute_txid() instead.
[INFO] [stdout]    --> src/wallet.rs:292:22
[INFO] [stdout]     |
[INFO] [stdout] 292 |             txid: tx.txid(),
[INFO] [stdout]     |                      ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `fn(State<Arc<Wallet>>) -> ... {pubkeys_handler}: Handler<_, _>` is not satisfied
[INFO] [stdout]     --> src/api.rs:35:32
[INFO] [stdout]      |
[INFO] [stdout]   35 |         .route("/pubkeys", get(pubkeys_handler))
[INFO] [stdout]      |                            --- ^^^^^^^^^^^^^^^ the trait `Handler<_, _>` is not implemented for fn item `fn(State<Arc<Wallet>>) -> impl Future<Output = ...> {pubkeys_handler}`
[INFO] [stdout]      |                            |
[INFO] [stdout]      |                            required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = note: Consider using `#[axum::debug_handler]` to improve the error message
[INFO] [stdout] note: there are multiple different versions of crate `axum` in the dependency graph
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/handler/mod.rs:134:1
[INFO] [stdout]      |
[INFO] [stdout]  134 | pub trait Handler<T, S>: Clone + Send + Sized + 'static {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected trait
[INFO] [stdout]      |
[INFO] [stdout]     ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.8.4/src/handler/mod.rs:134:1
[INFO] [stdout]      |
[INFO] [stdout]  134 | pub trait Handler<T, S>: Clone + Send + Sync + Sized + 'static {
[INFO] [stdout]      | --------------------------------------------------------------
[INFO] [stdout]      | |
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      = help: you can use `cargo tree` to explore your dependency tree
[INFO] [stdout] help: the following other types implement trait `Handler<T, S>`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/routing/method_routing.rs:1309:1
[INFO] [stdout]      |
[INFO] [stdout] 1309 | / impl<S> Handler<(), S> for MethodRouter<S>
[INFO] [stdout] 1310 | | where
[INFO] [stdout] 1311 | |     S: Clone + 'static,
[INFO] [stdout]      | |_______________________^ `MethodRouter<S>` implements `Handler<(), S>`
[INFO] [stdout]      |
[INFO] [stdout]     ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/handler/mod.rs:303:1
[INFO] [stdout]      |
[INFO] [stdout]  303 | / impl<H, S, T, L> Handler<T, S> for Layered<L, H, T, S>
[INFO] [stdout]  304 | | where
[INFO] [stdout]  305 | |     L: Layer<HandlerService<H, T, S>> + Clone + Send + 'static,
[INFO] [stdout]  306 | |     H: Handler<T, S>,
[INFO] [stdout] ...    |
[INFO] [stdout]  310 | |     T: 'static,
[INFO] [stdout]  311 | |     S: 'static,
[INFO] [stdout]      | |_______________^ `Layered<L, H, T, S>` implements `Handler<T, S>`
[INFO] [stdout] note: required by a bound in `axum::routing::get`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/routing/method_routing.rs:166:16
[INFO] [stdout]      |
[INFO] [stdout]  166 |             H: Handler<T, S>,
[INFO] [stdout]      |                ^^^^^^^^^^^^^ required by this bound in `get`
[INFO] [stdout] ...
[INFO] [stdout]  439 | top_level_handler_fn!(get, GET);
[INFO] [stdout]      | -------------------------------
[INFO] [stdout]      | |                     |
[INFO] [stdout]      | |                     required by a bound in this function
[INFO] [stdout]      | in this macro invocation
[INFO] [stdout]      = note: the full name for the type has been written to '/opt/rustwide/target/debug/deps/collab_bitcoin_wallet-8fbebf4a112313b1.long-type-4318700213350357340.txt'
[INFO] [stdout]      = note: consider using `--verbose` to print the full type name to the console
[INFO] [stdout]      = note: this error originates in the macro `top_level_handler_fn` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:294:24
[INFO] [stdout]     |
[INFO] [stdout] 294 |         let response = self.comm.send_message(msg).await?;
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Comm` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/comm.rs:9:14
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub trait Comm {
[INFO] [stdout]     |           ---- this trait is not dyn compatible...
[INFO] [stdout]   9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]     |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout]  10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]     |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout]  11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]     |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]     = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]     = help: consider moving `send_message` to another trait
[INFO] [stdout]     = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `fn(State<Arc<Wallet>>, Bytes) -> ... {message_handler}: Handler<_, _>` is not satisfied
[INFO] [stdout]     --> src/api.rs:36:33
[INFO] [stdout]      |
[INFO] [stdout]   36 |         .route("/message", post(message_handler))
[INFO] [stdout]      |                            ---- ^^^^^^^^^^^^^^^ the trait `Handler<_, _>` is not implemented for fn item `fn(State<Arc<Wallet>>, Bytes) -> ... {message_handler}`
[INFO] [stdout]      |                            |
[INFO] [stdout]      |                            required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = note: Consider using `#[axum::debug_handler]` to improve the error message
[INFO] [stdout] note: there are multiple different versions of crate `axum` in the dependency graph
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/handler/mod.rs:134:1
[INFO] [stdout]      |
[INFO] [stdout]  134 | pub trait Handler<T, S>: Clone + Send + Sized + 'static {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected trait
[INFO] [stdout]      |
[INFO] [stdout]     ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.8.4/src/handler/mod.rs:134:1
[INFO] [stdout]      |
[INFO] [stdout]  134 | pub trait Handler<T, S>: Clone + Send + Sync + Sized + 'static {
[INFO] [stdout]      | --------------------------------------------------------------
[INFO] [stdout]      | |
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      = help: you can use `cargo tree` to explore your dependency tree
[INFO] [stdout] help: the following other types implement trait `Handler<T, S>`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/routing/method_routing.rs:1309:1
[INFO] [stdout]      |
[INFO] [stdout] 1309 | / impl<S> Handler<(), S> for MethodRouter<S>
[INFO] [stdout] 1310 | | where
[INFO] [stdout] 1311 | |     S: Clone + 'static,
[INFO] [stdout]      | |_______________________^ `MethodRouter<S>` implements `Handler<(), S>`
[INFO] [stdout]      |
[INFO] [stdout]     ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/handler/mod.rs:303:1
[INFO] [stdout]      |
[INFO] [stdout]  303 | / impl<H, S, T, L> Handler<T, S> for Layered<L, H, T, S>
[INFO] [stdout]  304 | | where
[INFO] [stdout]  305 | |     L: Layer<HandlerService<H, T, S>> + Clone + Send + 'static,
[INFO] [stdout]  306 | |     H: Handler<T, S>,
[INFO] [stdout] ...    |
[INFO] [stdout]  310 | |     T: 'static,
[INFO] [stdout]  311 | |     S: 'static,
[INFO] [stdout]      | |_______________^ `Layered<L, H, T, S>` implements `Handler<T, S>`
[INFO] [stdout] note: required by a bound in `axum::routing::post`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/routing/method_routing.rs:166:16
[INFO] [stdout]      |
[INFO] [stdout]  166 |             H: Handler<T, S>,
[INFO] [stdout]      |                ^^^^^^^^^^^^^ required by this bound in `post`
[INFO] [stdout] ...
[INFO] [stdout]  443 | top_level_handler_fn!(post, POST);
[INFO] [stdout]      | ---------------------------------
[INFO] [stdout]      | |                     |
[INFO] [stdout]      | |                     required by a bound in this function
[INFO] [stdout]      | in this macro invocation
[INFO] [stdout]      = note: the full name for the type has been written to '/opt/rustwide/target/debug/deps/collab_bitcoin_wallet-8fbebf4a112313b1.long-type-13001365863078777437.txt'
[INFO] [stdout]      = note: consider using `--verbose` to print the full type name to the console
[INFO] [stdout]      = note: this error originates in the macro `top_level_handler_fn` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn Comm + 'static)` cannot be shared between threads safely
[INFO] [stdout]    --> src/api.rs:34:5
[INFO] [stdout]     |
[INFO] [stdout]  34 |     Router::new()
[INFO] [stdout]     |     ^^^^^^^^^^^^^ `(dyn Comm + 'static)` cannot be shared between threads safely
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sync` is not implemented for `(dyn Comm + 'static)`
[INFO] [stdout]     = note: required for `Arc<(dyn Comm + 'static)>` to implement `Sync`
[INFO] [stdout] note: required because it appears within the type `Wallet`
[INFO] [stdout]    --> src/wallet.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  80 | pub struct Wallet {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout]     = note: required for `Arc<Wallet>` to implement `std::marker::Send`
[INFO] [stdout] note: required by a bound in `Router::<S>::new`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/routing/mod.rs:133:16
[INFO] [stdout]     |
[INFO] [stdout] 133 |     S: Clone + Send + Sync + 'static,
[INFO] [stdout]     |                ^^^^ required by this bound in `Router::<S>::new`
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn new() -> Self {
[INFO] [stdout]     |            --- required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn Comm + 'static)` cannot be sent between threads safely
[INFO] [stdout]    --> src/api.rs:34:5
[INFO] [stdout]     |
[INFO] [stdout]  34 |     Router::new()
[INFO] [stdout]     |     ^^^^^^^^^^^^^ `(dyn Comm + 'static)` cannot be sent between threads safely
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `std::marker::Send` is not implemented for `(dyn Comm + 'static)`
[INFO] [stdout]     = note: required for `Arc<(dyn Comm + 'static)>` to implement `Sync`
[INFO] [stdout] note: required because it appears within the type `Wallet`
[INFO] [stdout]    --> src/wallet.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  80 | pub struct Wallet {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout]     = note: required for `Arc<Wallet>` to implement `std::marker::Send`
[INFO] [stdout] note: required by a bound in `Router::<S>::new`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/routing/mod.rs:133:16
[INFO] [stdout]     |
[INFO] [stdout] 133 |     S: Clone + Send + Sync + 'static,
[INFO] [stdout]     |                ^^^^ required by this bound in `Router::<S>::new`
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn new() -> Self {
[INFO] [stdout]     |            --- required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `StaticSecret` doesn't implement `Debug`
[INFO] [stdout]   --> src/wallet.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | #[derive(Serialize, Deserialize, Clone, Debug)]
[INFO] [stdout]    |                                         ----- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 65 |     enc_sk: StaticSecret,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^ the trait `Debug` is not implemented for `StaticSecret`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `begin_signing` found for struct `FirstRound` in the current scope
[INFO] [stdout]    --> src/wallet.rs:303:38
[INFO] [stdout]     |
[INFO] [stdout] 303 |             let second = first_round.begin_signing()?;
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^ method not found in `FirstRound`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bitcoin::Transaction::txid`: txid has been renamed to compute_txid to note that it's computationally expensive.  use compute_txid() instead.
[INFO] [stdout]    --> src/wallet.rs:306:26
[INFO] [stdout]     |
[INFO] [stdout] 306 |                 txid: tx.txid(),
[INFO] [stdout]     |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]    --> src/wallet.rs:309:29
[INFO] [stdout]     |
[INFO] [stdout] 309 |             let response2 = self.comm.send_message(msg2).await?;
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Comm` is not dyn compatible
[INFO] [stdout]     |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]    --> src/comm.rs:9:14
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub trait Comm {
[INFO] [stdout]     |           ---- this trait is not dyn compatible...
[INFO] [stdout]   9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]     |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout]  10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]     |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout]  11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]     |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]     = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]     = help: consider moving `send_message` to another trait
[INFO] [stdout]     = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no associated function or constant named `new` found for struct `ChaChaPoly1305<C, N>` in the current scope
[INFO] [stdout]    --> src/wallet.rs:369:40
[INFO] [stdout]     |
[INFO] [stdout] 369 |         let cipher = ChaCha20Poly1305::new(shared_secret.into());
[INFO] [stdout]     |                                        ^^^ associated function or constant not found in `ChaChaPoly1305<StreamCipherCoreWrapper<ChaChaCore<UInt<..., ...>>>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout]     = note: the full name for the type has been written to '/opt/rustwide/target/debug/deps/collab_bitcoin_wallet-8fbebf4a112313b1.long-type-15330055727784122016.txt'
[INFO] [stdout]     = note: consider using `--verbose` to print the full type name to the console
[INFO] [stdout] help: trait `KeyInit` which provides `new` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]     |
[INFO] [stdout]   1 + use chacha20poly1305::KeyInit;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `musig2::secp::Scalar: From<secp256k1::SecretKey>` is not satisfied
[INFO] [stdout]    --> src/wallet.rs:354:34
[INFO] [stdout]     |
[INFO] [stdout] 354 |                     .with_seckey(self.btc_sk)
[INFO] [stdout]     |                      ----------- ^^^^^^^^^^^ the trait `From<secp256k1::SecretKey>` is not implemented for `musig2::secp::Scalar`
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: `musig2::secp::Scalar` implements trait `From<T>`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/secp-0.6.0/src/scalars.rs:819:13
[INFO] [stdout]     |
[INFO] [stdout] 819 |             impl From<secp256k1::SecretKey> for Scalar {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `From<musig2::secp256k1::SecretKey>`
[INFO] [stdout] ...
[INFO] [stdout] 848 |             impl From<secp256k1::Scalar> for Scalar {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `From<musig2::secp256k1::Scalar>`
[INFO] [stdout]     = note: required for `secp256k1::SecretKey` to implement `Into<musig2::secp::Scalar>`
[INFO] [stdout] note: required by a bound in `SecNonceSpices::<'ns>::with_seckey`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/musig2-0.3.1/src/nonces.rs:94:43
[INFO] [stdout]     |
[INFO] [stdout]  94 |     pub fn with_seckey(self, seckey: impl Into<Scalar>) -> SecNonceSpices<'ns> {
[INFO] [stdout]     |                                           ^^^^^^^^^^^^ required by this bound in `SecNonceSpices::<'ns>::with_seckey`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0614]: type `PubNonce` cannot be dereferenced
[INFO] [stdout]    --> src/wallet.rs:357:63
[INFO] [stdout]     |
[INFO] [stdout] 357 |             first_round.receive_nonce(1 - state.signer_index, *proposer_nonce)?;
[INFO] [stdout]     |                                                               ^^^^^^^^^^^^^^^ can't be dereferenced
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no associated function or constant named `new` found for struct `ChaChaPoly1305<C, N>` in the current scope
[INFO] [stdout]    --> src/wallet.rs:378:40
[INFO] [stdout]     |
[INFO] [stdout] 378 |         let cipher = ChaCha20Poly1305::new(shared_secret.into());
[INFO] [stdout]     |                                        ^^^ associated function or constant not found in `ChaChaPoly1305<StreamCipherCoreWrapper<ChaChaCore<UInt<..., ...>>>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout]     = note: the full name for the type has been written to '/opt/rustwide/target/debug/deps/collab_bitcoin_wallet-8fbebf4a112313b1.long-type-15330055727784122016.txt'
[INFO] [stdout]     = note: consider using `--verbose` to print the full type name to the console
[INFO] [stdout] help: trait `KeyInit` which provides `new` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]     |
[INFO] [stdout]   1 + use chacha20poly1305::KeyInit;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `openapi`
[INFO] [stdout]   --> src/api.rs:30:22
[INFO] [stdout]    |
[INFO] [stdout] 30 |     fn modify(&self, openapi: &mut utoipa::openapi::OpenApi) {}
[INFO] [stdout]    |                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_openapi`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0038, E0107, E0277, E0308, E0425, E0432, E0433, E0599, E0609...
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0038`.
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `begin_signing` found for struct `FirstRound` in the current scope
[INFO] [stdout]    --> src/wallet.rs:359:38
[INFO] [stdout]     |
[INFO] [stdout] 359 |             let second = first_round.begin_signing()?;
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^ method not found in `FirstRound`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `collab-bitcoin-wallet` (lib test) due to 103 previous errors; 7 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]   --> src/wallet.rs:81:24
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub persister: Arc<dyn Persister>,
[INFO] [stdout]    |                        ^^^^^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/persistence.rs:6:14
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub trait Persister: Send + Sync {
[INFO] [stdout]    |           --------- this trait is not dyn compatible...
[INFO] [stdout]  6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]    |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]  7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]    |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]    = help: consider moving `load` to another trait
[INFO] [stdout]    = help: consider moving `save` to another trait
[INFO] [stdout]    = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]   --> src/wallet.rs:82:19
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub comm: Arc<dyn Comm>,
[INFO] [stdout]    |                   ^^^^^^^^ `Comm` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/comm.rs:9:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Comm {
[INFO] [stdout]    |           ---- this trait is not dyn compatible...
[INFO] [stdout]  9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]    |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout] 10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]    |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout] 11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]    |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]    = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]    = help: consider moving `send_message` to another trait
[INFO] [stdout]    = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]   --> src/comm.rs:31:27
[INFO] [stdout]    |
[INFO] [stdout] 31 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>> {
[INFO] [stdout]    |                           ^^^^ `Comm` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/comm.rs:9:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Comm {
[INFO] [stdout]    |           ---- this trait is not dyn compatible...
[INFO] [stdout]  9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]    |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout] 10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]    |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout] 11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]    |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]    = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]    = help: consider moving `send_message` to another trait
[INFO] [stdout]    = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]   --> src/comm.rs:37:28
[INFO] [stdout]    |
[INFO] [stdout] 37 |     async fn send_message(&self, msg: Message) -> Result<Message> {
[INFO] [stdout]    |                            ^^^^ `Comm` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/comm.rs:9:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Comm {
[INFO] [stdout]    |           ---- this trait is not dyn compatible...
[INFO] [stdout]  9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]    |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout] 10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]    |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout] 11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]    |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]    = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]    = help: consider moving `send_message` to another trait
[INFO] [stdout]    = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]   --> src/comm.rs:51:21
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub fn encrypt(&self, data: &[u8], shared_secret: &[u8; 32]) -> Result<Vec<u8>> {
[INFO] [stdout]    |                     ^^^^ `Comm` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/comm.rs:9:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Comm {
[INFO] [stdout]    |           ---- this trait is not dyn compatible...
[INFO] [stdout]  9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]    |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout] 10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]    |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout] 11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]    |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]    = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]    = help: consider moving `send_message` to another trait
[INFO] [stdout]    = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]   --> src/comm.rs:60:28
[INFO] [stdout]    |
[INFO] [stdout] 60 |     pub(crate) fn decrypt(&self, encrypted: &[u8], shared_secret: &[u8; 32]) -> Result<Vec<u8>> {
[INFO] [stdout]    |                            ^^^^ `Comm` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/comm.rs:9:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Comm {
[INFO] [stdout]    |           ---- this trait is not dyn compatible...
[INFO] [stdout]  9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]    |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout] 10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]    |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout] 11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]    |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]    = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]    = help: consider moving `send_message` to another trait
[INFO] [stdout]    = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Comm` is not dyn compatible
[INFO] [stdout]   --> src/comm.rs:66:30
[INFO] [stdout]    |
[INFO] [stdout] 66 |     async fn set_peer_onion(&self, onion: String) {
[INFO] [stdout]    |                              ^^^^ `Comm` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/comm.rs:9:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Comm {
[INFO] [stdout]    |           ---- this trait is not dyn compatible...
[INFO] [stdout]  9 |     async fn get_pubkeys(&self, peer_onion: &str) -> Result<HashMap<String, String>>;
[INFO] [stdout]    |              ^^^^^^^^^^^ ...because method `get_pubkeys` is `async`
[INFO] [stdout] 10 |     async fn send_message(&self, msg: Message) -> Result<Message>;
[INFO] [stdout]    |              ^^^^^^^^^^^^ ...because method `send_message` is `async`
[INFO] [stdout] 11 |     async fn set_peer_onion(&self, onion: String);
[INFO] [stdout]    |              ^^^^^^^^^^^^^^ ...because method `set_peer_onion` is `async`
[INFO] [stdout]    = help: consider moving `get_pubkeys` to another trait
[INFO] [stdout]    = help: consider moving `send_message` to another trait
[INFO] [stdout]    = help: consider moving `set_peer_onion` to another trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Persister` is not dyn compatible
[INFO] [stdout]   --> src/wallet.rs:90:45
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub async fn load_or_new(persister: Arc<dyn Persister>) -> Result<Self> {
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^ `Persister` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/persistence.rs:6:14
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub trait Persister: Send + Sync {
[INFO] [stdout]    |           --------- this trait is not dyn compatible...
[INFO] [stdout]  6 |     async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
[INFO] [stdout]    |              ^^^^ ...because method `save` is `async`
[INFO] [stdout]  7 |     async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
[INFO] [stdout]    |              ^^^^ ...because method `load` is `async`
[INFO] [stdout]    = help: consider moving `load` to another trait
[INFO] [stdout]    = help: consider moving `save` to another trait
[INFO] [stdout]    = help: only type `persistence::SledPersister` implements `Persister` within this crate; consider using it directly instead.
[INFO] [stdout]    = note: `Persister` may be implemented in other crates; if you want to support your users passing their own types here, you can't refer to a specific type
[INFO] [stdout] help: you might have meant to use `Self` to refer to the implementing type
[INFO] [stdout]    |
[INFO] [stdout] 90 -     pub async fn load_or_new(persister: Arc<dyn Persister>) -> Result<Self> {
[INFO] [stdout] 90 +     pub async fn load_or_new(persister: Arc<Self>) -> Result<Self> {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `HashMap<std::string::String, std::string::String>: ToSchema<'_>` is not satisfied
[INFO] [stdout]    --> src/api.rs:22:24
[INFO] [stdout]     |
[INFO] [stdout]  22 |     components(schemas(HashMap<String, String>, Bytes)),
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^ the trait `ToSchema<'_>` is not implemented for `HashMap<std::string::String, std::string::String>`
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `ToSchema<'__s>` is implemented for `()`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/utoipa-4.2.3/src/lib.rs:413:1
[INFO] [stdout]     |
[INFO] [stdout] 413 | impl<'__s> ToSchema<'__s> for TupleUnit {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ComponentsBuilder::schema_from`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/utoipa-4.2.3/src/openapi/schema.rs:138:31
[INFO] [stdout]     |
[INFO] [stdout] 138 |     pub fn schema_from<'s, I: ToSchema<'s>>(mut self) -> Self {
[INFO] [stdout]     |                               ^^^^^^^^^^^^ required by this bound in `ComponentsBuilder::schema_from`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `axum::body::Bytes: ToSchema<'_>` is not satisfied
[INFO] [stdout]    --> src/api.rs:22:49
[INFO] [stdout]     |
[INFO] [stdout]  22 |     components(schemas(HashMap<String, String>, Bytes)),
[INFO] [stdout]     |                                                 ^^^^^ the trait `ToSchema<'_>` is not implemented for `axum::body::Bytes`
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `ToSchema<'__s>` is implemented for `()`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/utoipa-4.2.3/src/lib.rs:413:1
[INFO] [stdout]     |
[INFO] [stdout] 413 | impl<'__s> ToSchema<'__s> for TupleUnit {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `ComponentsBuilder::schema_from`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/utoipa-4.2.3/src/openapi/schema.rs:138:31
[INFO] [stdout]     |
[INFO] [stdout] 138 |     pub fn schema_from<'s, I: ToSchema<'s>>(mut self) -> Self {
[INFO] [stdout]     |                               ^^^^^^^^^^^^ required by this bound in `ComponentsBuilder::schema_from`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `fn(State<Arc<Wallet>>) -> ... {pubkeys_handler}: Handler<_, _>` is not satisfied
[INFO] [stdout]     --> src/api.rs:35:32
[INFO] [stdout]      |
[INFO] [stdout]   35 |         .route("/pubkeys", get(pubkeys_handler))
[INFO] [stdout]      |                            --- ^^^^^^^^^^^^^^^ the trait `Handler<_, _>` is not implemented for fn item `fn(State<Arc<Wallet>>) -> impl Future<Output = ...> {pubkeys_handler}`
[INFO] [stdout]      |                            |
[INFO] [stdout]      |                            required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = note: Consider using `#[axum::debug_handler]` to improve the error message
[INFO] [stdout] note: there are multiple different versions of crate `axum` in the dependency graph
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/handler/mod.rs:134:1
[INFO] [stdout]      |
[INFO] [stdout]  134 | pub trait Handler<T, S>: Clone + Send + Sized + 'static {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected trait
[INFO] [stdout]      |
[INFO] [stdout]     ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.8.4/src/handler/mod.rs:134:1
[INFO] [stdout]      |
[INFO] [stdout]  134 | pub trait Handler<T, S>: Clone + Send + Sync + Sized + 'static {
[INFO] [stdout]      | --------------------------------------------------------------
[INFO] [stdout]      | |
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      = help: you can use `cargo tree` to explore your dependency tree
[INFO] [stdout] help: the following other types implement trait `Handler<T, S>`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/routing/method_routing.rs:1309:1
[INFO] [stdout]      |
[INFO] [stdout] 1309 | / impl<S> Handler<(), S> for MethodRouter<S>
[INFO] [stdout] 1310 | | where
[INFO] [stdout] 1311 | |     S: Clone + 'static,
[INFO] [stdout]      | |_______________________^ `MethodRouter<S>` implements `Handler<(), S>`
[INFO] [stdout]      |
[INFO] [stdout]     ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/handler/mod.rs:303:1
[INFO] [stdout]      |
[INFO] [stdout]  303 | / impl<H, S, T, L> Handler<T, S> for Layered<L, H, T, S>
[INFO] [stdout]  304 | | where
[INFO] [stdout]  305 | |     L: Layer<HandlerService<H, T, S>> + Clone + Send + 'static,
[INFO] [stdout]  306 | |     H: Handler<T, S>,
[INFO] [stdout] ...    |
[INFO] [stdout]  310 | |     T: 'static,
[INFO] [stdout]  311 | |     S: 'static,
[INFO] [stdout]      | |_______________^ `Layered<L, H, T, S>` implements `Handler<T, S>`
[INFO] [stdout] note: required by a bound in `axum::routing::get`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/routing/method_routing.rs:166:16
[INFO] [stdout]      |
[INFO] [stdout]  166 |             H: Handler<T, S>,
[INFO] [stdout]      |                ^^^^^^^^^^^^^ required by this bound in `get`
[INFO] [stdout] ...
[INFO] [stdout]  439 | top_level_handler_fn!(get, GET);
[INFO] [stdout]      | -------------------------------
[INFO] [stdout]      | |                     |
[INFO] [stdout]      | |                     required by a bound in this function
[INFO] [stdout]      | in this macro invocation
[INFO] [stdout]      = note: the full name for the type has been written to '/opt/rustwide/target/debug/deps/collab_bitcoin_wallet-9ea3fbae1d99a9a3.long-type-13941733163357429538.txt'
[INFO] [stdout]      = note: consider using `--verbose` to print the full type name to the console
[INFO] [stdout]      = note: this error originates in the macro `top_level_handler_fn` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `fn(State<Arc<Wallet>>, Bytes) -> ... {message_handler}: Handler<_, _>` is not satisfied
[INFO] [stdout]     --> src/api.rs:36:33
[INFO] [stdout]      |
[INFO] [stdout]   36 |         .route("/message", post(message_handler))
[INFO] [stdout]      |                            ---- ^^^^^^^^^^^^^^^ the trait `Handler<_, _>` is not implemented for fn item `fn(State<Arc<Wallet>>, Bytes) -> ... {message_handler}`
[INFO] [stdout]      |                            |
[INFO] [stdout]      |                            required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = note: Consider using `#[axum::debug_handler]` to improve the error message
[INFO] [stdout] note: there are multiple different versions of crate `axum` in the dependency graph
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/handler/mod.rs:134:1
[INFO] [stdout]      |
[INFO] [stdout]  134 | pub trait Handler<T, S>: Clone + Send + Sized + 'static {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected trait
[INFO] [stdout]      |
[INFO] [stdout]     ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.8.4/src/handler/mod.rs:134:1
[INFO] [stdout]      |
[INFO] [stdout]  134 | pub trait Handler<T, S>: Clone + Send + Sync + Sized + 'static {
[INFO] [stdout]      | --------------------------------------------------------------
[INFO] [stdout]      | |
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      | this is the found trait
[INFO] [stdout]      = help: you can use `cargo tree` to explore your dependency tree
[INFO] [stdout] help: the following other types implement trait `Handler<T, S>`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/routing/method_routing.rs:1309:1
[INFO] [stdout]      |
[INFO] [stdout] 1309 | / impl<S> Handler<(), S> for MethodRouter<S>
[INFO] [stdout] 1310 | | where
[INFO] [stdout] 1311 | |     S: Clone + 'static,
[INFO] [stdout]      | |_______________________^ `MethodRouter<S>` implements `Handler<(), S>`
[INFO] [stdout]      |
[INFO] [stdout]     ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/handler/mod.rs:303:1
[INFO] [stdout]      |
[INFO] [stdout]  303 | / impl<H, S, T, L> Handler<T, S> for Layered<L, H, T, S>
[INFO] [stdout]  304 | | where
[INFO] [stdout]  305 | |     L: Layer<HandlerService<H, T, S>> + Clone + Send + 'static,
[INFO] [stdout]  306 | |     H: Handler<T, S>,
[INFO] [stdout] ...    |
[INFO] [stdout]  310 | |     T: 'static,
[INFO] [stdout]  311 | |     S: 'static,
[INFO] [stdout]      | |_______________^ `Layered<L, H, T, S>` implements `Handler<T, S>`
[INFO] [stdout] note: required by a bound in `axum::routing::post`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/routing/method_routing.rs:166:16
[INFO] [stdout]      |
[INFO] [stdout]  166 |             H: Handler<T, S>,
[INFO] [stdout]      |                ^^^^^^^^^^^^^ required by this bound in `post`
[INFO] [stdout] ...
[INFO] [stdout]  443 | top_level_handler_fn!(post, POST);
[INFO] [stdout]      | ---------------------------------
[INFO] [stdout]      | |                     |
[INFO] [stdout]      | |                     required by a bound in this function
[INFO] [stdout]      | in this macro invocation
[INFO] [stdout]      = note: the full name for the type has been written to '/opt/rustwide/target/debug/deps/collab_bitcoin_wallet-9ea3fbae1d99a9a3.long-type-8976093002751247155.txt'
[INFO] [stdout]      = note: consider using `--verbose` to print the full type name to the console
[INFO] [stdout]      = note: this error originates in the macro `top_level_handler_fn` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn Comm + 'static)` cannot be shared between threads safely
[INFO] [stdout]    --> src/api.rs:34:5
[INFO] [stdout]     |
[INFO] [stdout]  34 |     Router::new()
[INFO] [stdout]     |     ^^^^^^^^^^^^^ `(dyn Comm + 'static)` cannot be shared between threads safely
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sync` is not implemented for `(dyn Comm + 'static)`
[INFO] [stdout]     = note: required for `Arc<(dyn Comm + 'static)>` to implement `Sync`
[INFO] [stdout] note: required because it appears within the type `Wallet`
[INFO] [stdout]    --> src/wallet.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  80 | pub struct Wallet {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout]     = note: required for `Arc<Wallet>` to implement `std::marker::Send`
[INFO] [stdout] note: required by a bound in `Router::<S>::new`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/routing/mod.rs:133:16
[INFO] [stdout]     |
[INFO] [stdout] 133 |     S: Clone + Send + Sync + 'static,
[INFO] [stdout]     |                ^^^^ required by this bound in `Router::<S>::new`
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn new() -> Self {
[INFO] [stdout]     |            --- required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn Comm + 'static)` cannot be sent between threads safely
[INFO] [stdout]    --> src/api.rs:34:5
[INFO] [stdout]     |
[INFO] [stdout]  34 |     Router::new()
[INFO] [stdout]     |     ^^^^^^^^^^^^^ `(dyn Comm + 'static)` cannot be sent between threads safely
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `std::marker::Send` is not implemented for `(dyn Comm + 'static)`
[INFO] [stdout]     = note: required for `Arc<(dyn Comm + 'static)>` to implement `Sync`
[INFO] [stdout] note: required because it appears within the type `Wallet`
[INFO] [stdout]    --> src/wallet.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  80 | pub struct Wallet {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout]     = note: required for `Arc<Wallet>` to implement `std::marker::Send`
[INFO] [stdout] note: required by a bound in `Router::<S>::new`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/axum-0.7.9/src/routing/mod.rs:133:16
[INFO] [stdout]     |
[INFO] [stdout] 133 |     S: Clone + Send + Sync + 'static,
[INFO] [stdout]     |                ^^^^ required by this bound in `Router::<S>::new`
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn new() -> Self {
[INFO] [stdout]     |            --- required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `StaticSecret` doesn't implement `Debug`
[INFO] [stdout]   --> src/wallet.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | #[derive(Serialize, Deserialize, Clone, Debug)]
[INFO] [stdout]    |                                         ----- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 65 |     enc_sk: StaticSecret,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^ the trait `Debug` is not implemented for `StaticSecret`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no associated function or constant named `new` found for struct `ChaChaPoly1305<C, N>` in the current scope
[INFO] [stdout]    --> src/wallet.rs:369:40
[INFO] [stdout]     |
[INFO] [stdout] 369 |         let cipher = ChaCha20Poly1305::new(shared_secret.into());
[INFO] [stdout]     |                                        ^^^ associated function or constant not found in `ChaChaPoly1305<StreamCipherCoreWrapper<ChaChaCore<UInt<..., ...>>>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout]     = note: the full name for the type has been written to '/opt/rustwide/target/debug/deps/collab_bitcoin_wallet-9ea3fbae1d99a9a3.long-type-5787843791208339634.txt'
[INFO] [stdout]     = note: consider using `--verbose` to print the full type name to the console
[INFO] [stdout] help: trait `KeyInit` which provides `new` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]     |
[INFO] [stdout]   1 + use chacha20poly1305::KeyInit;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no associated function or constant named `new` found for struct `ChaChaPoly1305<C, N>` in the current scope
[INFO] [stdout]    --> src/wallet.rs:378:40
[INFO] [stdout]     |
[INFO] [stdout] 378 |         let cipher = ChaCha20Poly1305::new(shared_secret.into());
[INFO] [stdout]     |                                        ^^^ associated function or constant not found in `ChaChaPoly1305<StreamCipherCoreWrapper<ChaChaCore<UInt<..., ...>>>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout]     = note: the full name for the type has been written to '/opt/rustwide/target/debug/deps/collab_bitcoin_wallet-9ea3fbae1d99a9a3.long-type-5787843791208339634.txt'
[INFO] [stdout]     = note: consider using `--verbose` to print the full type name to the console
[INFO] [stdout] help: trait `KeyInit` which provides `new` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]     |
[INFO] [stdout]   1 + use chacha20poly1305::KeyInit;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `openapi`
[INFO] [stdout]   --> src/api.rs:30:22
[INFO] [stdout]    |
[INFO] [stdout] 30 |     fn modify(&self, openapi: &mut utoipa::openapi::OpenApi) {}
[INFO] [stdout]    |                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_openapi`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0038, E0107, E0277, E0308, E0425, E0432, E0433, E0599, E0609...
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0038`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `collab-bitcoin-wallet` (lib) due to 104 previous errors; 7 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "9f6f74b950cc339d067c7efccb4565b0e9c01edea6a68b8088cfd215f5f108cf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9f6f74b950cc339d067c7efccb4565b0e9c01edea6a68b8088cfd215f5f108cf", kill_on_drop: false }`
[INFO] [stdout] 9f6f74b950cc339d067c7efccb4565b0e9c01edea6a68b8088cfd215f5f108cf
