[INFO] fetching crate rbatis 1.8.37... [INFO] checking rbatis-1.8.37 against master#b7ebc6b0c1ba3c27ebb17c0b496ece778ef11e18 for pr-79470 [INFO] extracting crate rbatis 1.8.37 into /workspace/builds/worker-12/source [INFO] validating manifest of crates.io crate rbatis 1.8.37 on toolchain b7ebc6b0c1ba3c27ebb17c0b496ece778ef11e18 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+b7ebc6b0c1ba3c27ebb17c0b496ece778ef11e18" "read-manifest" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] started tweaking crates.io crate rbatis 1.8.37 [INFO] finished tweaking crates.io crate rbatis 1.8.37 [INFO] tweaked toml for crates.io crate rbatis 1.8.37 written to /workspace/builds/worker-12/source/Cargo.toml [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+b7ebc6b0c1ba3c27ebb17c0b496ece778ef11e18" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+b7ebc6b0c1ba3c27ebb17c0b496ece778ef11e18" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-12/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-12/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" "rustops/crates-build-env@sha256:c8ac004eab7d63a0ad09a2dde3d3353ba464f767bee4de425dc8f74c46a1905e" "/opt/rustwide/cargo-home/bin/cargo" "+b7ebc6b0c1ba3c27ebb17c0b496ece778ef11e18" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 0b12f8a8c46a599482bb76c3a0ae7be2043fabafd27691a367ee797b236ccef0 [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "0b12f8a8c46a599482bb76c3a0ae7be2043fabafd27691a367ee797b236ccef0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "0b12f8a8c46a599482bb76c3a0ae7be2043fabafd27691a367ee797b236ccef0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0b12f8a8c46a599482bb76c3a0ae7be2043fabafd27691a367ee797b236ccef0", kill_on_drop: false }` [INFO] [stdout] 0b12f8a8c46a599482bb76c3a0ae7be2043fabafd27691a367ee797b236ccef0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-12/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-12/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" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:c8ac004eab7d63a0ad09a2dde3d3353ba464f767bee4de425dc8f74c46a1905e" "/opt/rustwide/cargo-home/bin/cargo" "+b7ebc6b0c1ba3c27ebb17c0b496ece778ef11e18" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 3a21a51b310b8c2c5f847ac9f83e8d8a340047afd5cc92738f57fbcb70f9b320 [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "3a21a51b310b8c2c5f847ac9f83e8d8a340047afd5cc92738f57fbcb70f9b320", kill_on_drop: false }` [INFO] [stderr] Compiling autocfg v1.0.1 [INFO] [stderr] Compiling proc-macro2 v1.0.24 [INFO] [stderr] Compiling unicode-xid v0.2.1 [INFO] [stderr] Compiling syn v1.0.54 [INFO] [stderr] Checking cfg-if v0.1.10 [INFO] [stderr] Compiling version_check v0.9.2 [INFO] [stderr] Checking spin v0.5.2 [INFO] [stderr] Checking once_cell v1.5.2 [INFO] [stderr] Checking cfg-if v1.0.0 [INFO] [stderr] Compiling serde_derive v1.0.118 [INFO] [stderr] Checking futures-core v0.3.8 [INFO] [stderr] Compiling log v0.4.11 [INFO] [stderr] Compiling typenum v1.12.0 [INFO] [stderr] Checking pin-project-lite v0.1.11 [INFO] [stderr] Checking cache-padded v1.1.1 [INFO] [stderr] Compiling getrandom v0.1.15 [INFO] [stderr] Checking untrusted v0.7.1 [INFO] [stderr] Compiling proc-macro-hack v0.5.19 [INFO] [stderr] Compiling ryu v1.0.5 [INFO] [stderr] Compiling byteorder v1.3.4 [INFO] [stderr] Checking ppv-lite86 v0.2.10 [INFO] [stderr] Compiling bitflags v1.2.1 [INFO] [stderr] Checking tinyvec_macros v0.1.0 [INFO] [stderr] Checking matches v0.1.8 [INFO] [stderr] Compiling radium v0.5.3 [INFO] [stderr] Compiling maybe-uninit v2.0.0 [INFO] [stderr] Checking smallvec v1.5.1 [INFO] [stderr] Checking opaque-debug v0.3.0 [INFO] [stderr] Compiling autocfg v0.1.7 [INFO] [stderr] Compiling libm v0.2.1 [INFO] [stderr] Checking subtle v2.3.0 [INFO] [stderr] Checking tap v1.0.0 [INFO] [stderr] Compiling proc-macro-nested v0.1.6 [INFO] [stderr] Compiling build_const v0.2.1 [INFO] [stderr] Checking pin-utils v0.1.0 [INFO] [stderr] Checking cpuid-bool v0.1.2 [INFO] [stderr] Checking wyz v0.2.0 [INFO] [stderr] Compiling getrandom v0.2.0 [INFO] [stderr] Checking linked-hash-map v0.5.3 [INFO] [stderr] Checking funty v1.0.1 [INFO] [stderr] Checking base64 v0.12.3 [INFO] [stderr] Checking slab v0.4.2 [INFO] [stderr] Compiling const_fn v0.4.4 [INFO] [stderr] Checking itoa v0.4.6 [INFO] [stderr] Checking scopeguard v1.1.0 [INFO] [stderr] Checking futures-sink v0.3.8 [INFO] [stderr] Checking pin-project-lite v0.2.0 [INFO] [stderr] Checking percent-encoding v2.1.0 [INFO] [stderr] Checking base64 v0.13.0 [INFO] [stderr] Checking maplit v1.0.2 [INFO] [stderr] Checking unicode_categories v0.1.1 [INFO] [stderr] Checking bit-vec v0.6.3 [INFO] [stderr] Checking whoami v0.9.0 [INFO] [stderr] Checking hex v0.4.2 [INFO] [stderr] Checking either v1.6.1 [INFO] [stderr] Checking bytes v0.5.6 [INFO] [stderr] Checking dtoa v0.4.6 [INFO] [stderr] Compiling ring v0.16.19 [INFO] [stderr] Compiling libsqlite3-sys v0.20.1 [INFO] [stderr] Compiling bzip2-sys v0.1.9+1.0.8 [INFO] [stderr] Checking instant v0.1.9 [INFO] [stderr] Checking concurrent-queue v1.2.2 [INFO] [stderr] Checking futures-task v0.3.8 [INFO] [stderr] Checking tinyvec v1.1.0 [INFO] [stderr] Checking lazy_static v1.4.0 [INFO] [stderr] Checking unicode-bidi v0.3.4 [INFO] [stderr] Compiling generic-array v0.14.4 [INFO] [stderr] Compiling standback v0.2.13 [INFO] [stderr] Compiling nom v6.0.1 [INFO] [stderr] Compiling time v0.2.23 [INFO] [stderr] Checking lock_api v0.4.2 [INFO] [stderr] Checking futures-channel v0.3.8 [INFO] [stderr] Checking lru-cache v0.1.2 [INFO] [stderr] Checking yaml-rust v0.4.4 [INFO] [stderr] Compiling crc v1.8.1 [INFO] [stderr] Compiling num-traits v0.2.14 [INFO] [stderr] Compiling num-integer v0.1.44 [INFO] [stderr] Compiling crossbeam-utils v0.7.2 [INFO] [stderr] Compiling crossbeam-utils v0.8.1 [INFO] [stderr] Compiling num-iter v0.1.42 [INFO] [stderr] Compiling num-bigint v0.2.6 [INFO] [stderr] Compiling num-bigint v0.3.1 [INFO] [stderr] Checking form_urlencoded v1.0.0 [INFO] [stderr] Checking thread_local v1.0.1 [INFO] [stderr] Checking encoding_rs v0.8.26 [INFO] [stderr] Compiling num-bigint-dig v0.6.1 [INFO] [stderr] Checking async-channel v1.5.1 [INFO] [stderr] Checking crc32fast v1.2.1 [INFO] [stderr] Checking nb-connect v1.0.2 [INFO] [stderr] Checking signal-hook-registry v1.2.2 [INFO] [stderr] Checking num_cpus v1.13.0 [INFO] [stderr] Checking parking_lot_core v0.8.1 [INFO] [stderr] Checking futures-lite v1.11.2 [INFO] [stderr] Checking lexical-core v0.7.4 [INFO] [stderr] Checking bitvec v0.19.4 [INFO] [stderr] Checking polling v2.0.2 [INFO] [stderr] Checking kv-log-macro v1.0.7 [INFO] [stderr] Checking regex v1.4.2 [INFO] [stderr] Checking flate2 v1.0.14 [INFO] [stderr] Checking rand_core v0.5.1 [INFO] [stderr] Checking signal-hook v0.1.16 [INFO] [stderr] Checking ahash v0.5.10 [INFO] [stderr] Checking parking_lot v0.11.1 [INFO] [stderr] Checking unicode-normalization v0.1.16 [INFO] [stderr] Compiling quote v1.0.7 [INFO] [stderr] Checking rand_chacha v0.2.2 [INFO] [stderr] Checking crossbeam-channel v0.4.4 [INFO] [stderr] Checking crossbeam-queue v0.2.3 [INFO] [stderr] Checking bzip2 v0.3.3 [INFO] [stderr] Checking async-io v1.3.1 [INFO] [stderr] Checking async-executor v1.4.0 [INFO] [stderr] Checking blocking v1.0.2 [INFO] [stderr] Checking rand v0.7.3 [INFO] [stderr] Checking pem v0.8.2 [INFO] [stderr] Checking async-global-executor v1.4.3 [INFO] [stderr] Checking async-process v1.0.1 [INFO] [stderr] Checking digest v0.9.0 [INFO] [stderr] Checking block-buffer v0.9.0 [INFO] [stderr] Checking crypto-mac v0.9.1 [INFO] [stderr] Checking idna v0.2.0 [INFO] [stderr] Checking stringprep v0.1.2 [INFO] [stderr] Checking atoi v0.3.3 [INFO] [stderr] Checking sha2 v0.9.2 [INFO] [stderr] Checking md-5 v0.9.1 [INFO] [stderr] Checking sha-1 v0.9.2 [INFO] [stderr] Checking hmac v0.9.0 [INFO] [stderr] Checking url v2.2.0 [INFO] [stderr] Checking webpki v0.21.4 [INFO] [stderr] Checking sct v0.6.0 [INFO] [stderr] Checking rustls v0.18.1 [INFO] [stderr] Checking webpki-roots v0.20.0 [INFO] [stderr] Checking bigdecimal v0.2.0 [INFO] [stderr] Checking sqlformat v0.1.5 [INFO] [stderr] Checking async-rustls v0.1.2 [INFO] [stderr] Compiling synstructure v0.12.4 [INFO] [stderr] Compiling thiserror-impl v1.0.22 [INFO] [stderr] Compiling zeroize_derive v1.0.1 [INFO] [stderr] Compiling time-macros-impl v0.1.1 [INFO] [stderr] Compiling pin-project-internal v1.0.2 [INFO] [stderr] Compiling async-attributes v1.1.1 [INFO] [stderr] Compiling futures-macro v0.3.8 [INFO] [stderr] Compiling async-trait v0.1.42 [INFO] [stderr] Checking zeroize v1.2.0 [INFO] [stderr] Checking async-std v1.8.0 [INFO] [stderr] Checking time-macros v0.1.1 [INFO] [stderr] Checking thiserror v1.0.22 [INFO] [stderr] Checking zip v0.5.9 [INFO] [stderr] Checking pin-project v1.0.2 [INFO] [stderr] Checking futures-util v0.3.8 [INFO] [stderr] Checking serde v1.0.118 [INFO] [stderr] Checking sqlx-rt v0.2.0 [INFO] [stderr] Checking chrono v0.4.19 [INFO] [stderr] Checking serde_json v1.0.60 [INFO] [stderr] Checking rust_decimal v1.8.1 [INFO] [stderr] Checking uuid v0.8.1 [INFO] [stderr] Checking ipnetwork v0.17.0 [INFO] [stderr] Checking serde_yaml v0.8.14 [INFO] [stderr] Checking simple_asn1 v0.4.1 [INFO] [stderr] Checking fast_log v1.3.11 [INFO] [stderr] Checking rsa v0.3.0 [INFO] [stderr] Checking sqlx-core v0.4.0 [INFO] [stderr] Checking rbatis-core v1.8.45 [INFO] [stderr] Checking rbatis v1.8.37 (/opt/rustwide/workdir) [INFO] [stdout] error[E0432]: unresolved import `crate::core::db::PoolOptions` [INFO] [stdout] --> src/rbatis.rs:16:35 [INFO] [stdout] | [INFO] [stdout] 16 | use crate::core::db::{DriverType, PoolOptions}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | no `PoolOptions` in `db` [INFO] [stdout] | help: a similar name exists in the module: `DBPoolOptions` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `crate::core::db_adapter` [INFO] [stdout] --> src/rbatis.rs:17:18 [INFO] [stdout] | [INFO] [stdout] 17 | use crate::core::db_adapter::{DBExecResult, DBPool, DBPoolConn, DBQuery, DBTx}; [INFO] [stdout] | ^^^^^^^^^^ could not find `db_adapter` in `core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `crate::core::db_adapter` [INFO] [stdout] --> src/crud.rs:9:18 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::core::db_adapter::DBExecResult; [INFO] [stdout] | ^^^^^^^^^^ could not find `db_adapter` in `core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `rbatis_core::db_adapter` [INFO] [stdout] --> src/tx.rs:5:18 [INFO] [stdout] | [INFO] [stdout] 5 | use rbatis_core::db_adapter::DBPool; [INFO] [stdout] | ^^^^^^^^^^ could not find `db_adapter` in `rbatis_core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `crate::core::db_adapter` [INFO] [stdout] --> src/tx.rs:7:18 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::core::db_adapter::DBTx; [INFO] [stdout] | ^^^^^^^^^^ could not find `db_adapter` in `core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `crate::core::db::PoolOptions` [INFO] [stdout] --> src/rbatis.rs:16:35 [INFO] [stdout] | [INFO] [stdout] 16 | use crate::core::db::{DriverType, PoolOptions}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | no `PoolOptions` in `db` [INFO] [stdout] | help: a similar name exists in the module: `DBPoolOptions` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `crate::core::db_adapter` [INFO] [stdout] --> src/rbatis.rs:17:18 [INFO] [stdout] | [INFO] [stdout] 17 | use crate::core::db_adapter::{DBExecResult, DBPool, DBPoolConn, DBQuery, DBTx}; [INFO] [stdout] | ^^^^^^^^^^ could not find `db_adapter` in `core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `crate::core::db_adapter` [INFO] [stdout] --> src/crud.rs:9:18 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::core::db_adapter::DBExecResult; [INFO] [stdout] | ^^^^^^^^^^ could not find `db_adapter` in `core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `rbatis_core::db_adapter` [INFO] [stdout] --> src/tx.rs:5:18 [INFO] [stdout] | [INFO] [stdout] 5 | use rbatis_core::db_adapter::DBPool; [INFO] [stdout] | ^^^^^^^^^^ could not find `db_adapter` in `rbatis_core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `crate::core::db_adapter` [INFO] [stdout] --> src/tx.rs:7:18 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::core::db_adapter::DBTx; [INFO] [stdout] | ^^^^^^^^^^ could not find `db_adapter` in `core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0423]: expected function, found module `crate::core::runtime::channel` [INFO] [stdout] --> src/tx.rs:35:22 [INFO] [stdout] | [INFO] [stdout] 35 | let (s, r) = crate::core::runtime::channel(1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not a function [INFO] [stdout] | [INFO] [stdout] help: consider importing one of these items instead [INFO] [stdout] | [INFO] [stdout] 1 | use async_std::sync::channel; [INFO] [stdout] | [INFO] [stdout] 1 | use crate::interpreter::json::node::serde_json::raw::de::net::io::sys::ext::net::sys_common::backtrace::backtrace_rs::symbolize::gimli::mystd::sync::mpsc::channel; [INFO] [stdout] | [INFO] [stdout] 1 | use std::sync::mpsc::channel; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0423]: expected function, found module `crate::core::runtime::channel` [INFO] [stdout] --> src/tx.rs:35:22 [INFO] [stdout] | [INFO] [stdout] 35 | let (s, r) = crate::core::runtime::channel(1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not a function [INFO] [stdout] | [INFO] [stdout] help: consider importing one of these items instead [INFO] [stdout] | [INFO] [stdout] 1 | use async_std::sync::channel; [INFO] [stdout] | [INFO] [stdout] 1 | use crate::interpreter::json::node::serde_json::raw::de::net::io::sys::ext::net::sys_common::backtrace::backtrace_rs::symbolize::gimli::mystd::sync::mpsc::channel; [INFO] [stdout] | [INFO] [stdout] 1 | use std::sync::mpsc::channel; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0698]: type inside `async fn` body must be known in this context [INFO] [stdout] --> src/rbatis.rs:242:13 [INFO] [stdout] | [INFO] [stdout] 242 | let mut fetch_num = 0; [INFO] [stdout] | ^^^^^^^^^^^^^ cannot infer type for type `{integer}` [INFO] [stdout] | [INFO] [stdout] note: the type is part of the `async fn` body because of this `await` [INFO] [stdout] --> src/rbatis.rs:254:31 [INFO] [stdout] | [INFO] [stdout] 254 | let (data, num) = conn.value_mut().0.fetch(sql.as_str()).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0698]: type inside `async fn` body must be known in this context [INFO] [stdout] --> src/rbatis.rs:316:13 [INFO] [stdout] | [INFO] [stdout] 316 | let mut return_num = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^ cannot infer type for type `{integer}` [INFO] [stdout] | [INFO] [stdout] note: the type is part of the `async fn` body because of this `await` [INFO] [stdout] --> src/rbatis.rs:330:33 [INFO] [stdout] | [INFO] [stdout] 330 | let (result, num) = conn.value_mut().0.fetch_parperd(q).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> src/rbatis.rs:384:9 [INFO] [stdout] | [INFO] [stdout] 384 | self.exec_prepare(tx_id, w.sql.as_str(), &w.args).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0698]: type inside `async fn` body must be known in this context [INFO] [stdout] --> src/rbatis.rs:242:13 [INFO] [stdout] | [INFO] [stdout] 242 | let mut fetch_num = 0; [INFO] [stdout] | ^^^^^^^^^^^^^ cannot infer type for type `{integer}` [INFO] [stdout] | [INFO] [stdout] note: the type is part of the `async fn` body because of this `await` [INFO] [stdout] --> src/rbatis.rs:254:31 [INFO] [stdout] | [INFO] [stdout] 254 | let (data, num) = conn.value_mut().0.fetch(sql.as_str()).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0698]: type inside `async fn` body must be known in this context [INFO] [stdout] --> src/rbatis.rs:316:13 [INFO] [stdout] | [INFO] [stdout] 316 | let mut return_num = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^ cannot infer type for type `{integer}` [INFO] [stdout] | [INFO] [stdout] note: the type is part of the `async fn` body because of this `await` [INFO] [stdout] --> src/rbatis.rs:330:33 [INFO] [stdout] | [INFO] [stdout] 330 | let (result, num) = conn.value_mut().0.fetch_parperd(q).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> src/rbatis.rs:384:9 [INFO] [stdout] | [INFO] [stdout] 384 | self.exec_prepare(tx_id, w.sql.as_str(), &w.args).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the `?` operator can only be used in an async function that returns `Result` or `Option` (or another type that implements `Try`) [INFO] [stdout] --> src/rbatis.rs:440:27 [INFO] [stdout] | [INFO] [stdout] 438 | where Ser: Serialize + Send + Sync { [INFO] [stdout] | ____________________________________________- [INFO] [stdout] 439 | | let json = json!(arg); [INFO] [stdout] 440 | | let (sql, args) = self.py_to_sql(py, &json)?; [INFO] [stdout] | | ^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in an async function that returns `()` [INFO] [stdout] 441 | | return self.exec_prepare(tx_id, sql.as_str(), &args).await; [INFO] [stdout] 442 | | } [INFO] [stdout] | |_____- this function should return `Result` or `Option` to accept `?` [INFO] [stdout] | [INFO] [stdout] = help: the trait `Try` is not implemented for `()` [INFO] [stdout] = note: required by `from_error` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the `?` operator can only be used in an async function that returns `Result` or `Option` (or another type that implements `Try`) [INFO] [stdout] --> src/rbatis.rs:440:27 [INFO] [stdout] | [INFO] [stdout] 438 | where Ser: Serialize + Send + Sync { [INFO] [stdout] | ____________________________________________- [INFO] [stdout] 439 | | let json = json!(arg); [INFO] [stdout] 440 | | let (sql, args) = self.py_to_sql(py, &json)?; [INFO] [stdout] | | ^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in an async function that returns `()` [INFO] [stdout] 441 | | return self.exec_prepare(tx_id, sql.as_str(), &args).await; [INFO] [stdout] 442 | | } [INFO] [stdout] | |_____- this function should return `Result` or `Option` to accept `?` [INFO] [stdout] | [INFO] [stdout] = help: the trait `Try` is not implemented for `()` [INFO] [stdout] = note: required by `from_error` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the `?` operator can only be used in an async function that returns `Result` or `Option` (or another type that implements `Try`) [INFO] [stdout] --> src/crud.rs:238:57 [INFO] [stdout] | [INFO] [stdout] 236 | where T: CRUDEnable { [INFO] [stdout] | _____________________________- [INFO] [stdout] 237 | | let mut index = 0; [INFO] [stdout] 238 | | let (values, args) = entity.make_value_sql_arg(&self.driver_type()?, &mut index)?; [INFO] [stdout] | | ^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in an async function that returns `()` [INFO] [stdout] 239 | | let sql = format!("INSERT INTO {} ({}) VALUES ({})", T::table_name(), T::table_columns(), values); [INFO] [stdout] 240 | | return self.exec_prepare(tx_id, sql.as_str(), &args).await; [INFO] [stdout] 241 | | } [INFO] [stdout] | |_____- this function should return `Result` or `Option` to accept `?` [INFO] [stdout] | [INFO] [stdout] = help: the trait `Try` is not implemented for `()` [INFO] [stdout] = note: required by `from_error` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the `?` operator can only be used in an async function that returns `Result` or `Option` (or another type that implements `Try`) [INFO] [stdout] --> src/crud.rs:238:57 [INFO] [stdout] | [INFO] [stdout] 236 | where T: CRUDEnable { [INFO] [stdout] | _____________________________- [INFO] [stdout] 237 | | let mut index = 0; [INFO] [stdout] 238 | | let (values, args) = entity.make_value_sql_arg(&self.driver_type()?, &mut index)?; [INFO] [stdout] | | ^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in an async function that returns `()` [INFO] [stdout] 239 | | let sql = format!("INSERT INTO {} ({}) VALUES ({})", T::table_name(), T::table_columns(), values); [INFO] [stdout] 240 | | return self.exec_prepare(tx_id, sql.as_str(), &args).await; [INFO] [stdout] 241 | | } [INFO] [stdout] | |_____- this function should return `Result` or `Option` to accept `?` [INFO] [stdout] | [INFO] [stdout] = help: the trait `Try` is not implemented for `()` [INFO] [stdout] = note: required by `from_error` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the `?` operator can only be used in an async function that returns `Result` or `Option` (or another type that implements `Try`) [INFO] [stdout] --> src/crud.rs:238:30 [INFO] [stdout] | [INFO] [stdout] 236 | where T: CRUDEnable { [INFO] [stdout] | _____________________________- [INFO] [stdout] 237 | | let mut index = 0; [INFO] [stdout] 238 | | let (values, args) = entity.make_value_sql_arg(&self.driver_type()?, &mut index)?; [INFO] [stdout] | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in an async function that returns `()` [INFO] [stdout] 239 | | let sql = format!("INSERT INTO {} ({}) VALUES ({})", T::table_name(), T::table_columns(), values); [INFO] [stdout] 240 | | return self.exec_prepare(tx_id, sql.as_str(), &args).await; [INFO] [stdout] 241 | | } [INFO] [stdout] | |_____- this function should return `Result` or `Option` to accept `?` [INFO] [stdout] | [INFO] [stdout] = help: the trait `Try` is not implemented for `()` [INFO] [stdout] = note: required by `from_error` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the `?` operator can only be used in an async function that returns `Result` or `Option` (or another type that implements `Try`) [INFO] [stdout] --> src/crud.rs:238:30 [INFO] [stdout] | [INFO] [stdout] 236 | where T: CRUDEnable { [INFO] [stdout] | _____________________________- [INFO] [stdout] 237 | | let mut index = 0; [INFO] [stdout] 238 | | let (values, args) = entity.make_value_sql_arg(&self.driver_type()?, &mut index)?; [INFO] [stdout] | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in an async function that returns `()` [INFO] [stdout] 239 | | let sql = format!("INSERT INTO {} ({}) VALUES ({})", T::table_name(), T::table_columns(), values); [INFO] [stdout] 240 | | return self.exec_prepare(tx_id, sql.as_str(), &args).await; [INFO] [stdout] 241 | | } [INFO] [stdout] | |_____- this function should return `Result` or `Option` to accept `?` [INFO] [stdout] | [INFO] [stdout] = help: the trait `Try` is not implemented for `()` [INFO] [stdout] = note: required by `from_error` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> src/crud.rs:285:19 [INFO] [stdout] | [INFO] [stdout] 285 | return Ok(self.exec_prepare(tx_id, sql.as_str(), &w.args).await?.rows_affected); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type [INFO] [stdout] | [INFO] [stdout] = note: type must be known at this point [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> src/crud.rs:285:19 [INFO] [stdout] | [INFO] [stdout] 285 | return Ok(self.exec_prepare(tx_id, sql.as_str(), &w.args).await?.rows_affected); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type [INFO] [stdout] | [INFO] [stdout] = note: type must be known at this point [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> src/crud.rs:295:19 [INFO] [stdout] | [INFO] [stdout] 295 | return Ok(self.exec_prepare(tx_id, sql.as_str(), &vec![]).await?.rows_affected); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type [INFO] [stdout] | [INFO] [stdout] = note: type must be known at this point [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> src/crud.rs:295:19 [INFO] [stdout] | [INFO] [stdout] 295 | return Ok(self.exec_prepare(tx_id, sql.as_str(), &vec![]).await?.rows_affected); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type [INFO] [stdout] | [INFO] [stdout] = note: type must be known at this point [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> src/crud.rs:344:19 [INFO] [stdout] | [INFO] [stdout] 344 | return Ok(self.exec_prepare(tx_id, wrapper.sql.as_str(), &wrapper.args).await?.rows_affected); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type [INFO] [stdout] | [INFO] [stdout] = note: type must be known at this point [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> src/crud.rs:344:19 [INFO] [stdout] | [INFO] [stdout] 344 | return Ok(self.exec_prepare(tx_id, wrapper.sql.as_str(), &wrapper.args).await?.rows_affected); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type [INFO] [stdout] | [INFO] [stdout] = note: type must be known at this point [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> src/rbatis.rs:113:19 [INFO] [stdout] | [INFO] [stdout] 113 | pool: OnceCell::new(), [INFO] [stdout] | ^^^^^^^^^^^^^ cannot infer type for type parameter `T` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:303:110 [INFO] [stdout] | [INFO] [stdout] 303 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________________________^ [INFO] [stdout] 304 | | if ids.is_empty() { [INFO] [stdout] 305 | | return Ok(0); [INFO] [stdout] 306 | | } [INFO] [stdout] 307 | | let w = Wrapper::new(&self.driver_type()?).and().in_array(&T::id_name(), &ids).check()?; [INFO] [stdout] 308 | | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] 309 | | } [INFO] [stdout] | |_____^ future returned by `__remove_batch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, the trait `Sync` is not implemented for `*mut once_cell::imp::Waiter` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:308:16 [INFO] [stdout] | [INFO] [stdout] 303 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 308 | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 309 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:303:110 [INFO] [stdout] | [INFO] [stdout] 303 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________________________^ [INFO] [stdout] 304 | | if ids.is_empty() { [INFO] [stdout] 305 | | return Ok(0); [INFO] [stdout] 306 | | } [INFO] [stdout] 307 | | let w = Wrapper::new(&self.driver_type()?).and().in_array(&T::id_name(), &ids).check()?; [INFO] [stdout] 308 | | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] 309 | | } [INFO] [stdout] | |_____^ future returned by `__remove_batch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:308:16 [INFO] [stdout] | [INFO] [stdout] 303 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 308 | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 309 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:303:110 [INFO] [stdout] | [INFO] [stdout] 303 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________________________^ [INFO] [stdout] 304 | | if ids.is_empty() { [INFO] [stdout] 305 | | return Ok(0); [INFO] [stdout] 306 | | } [INFO] [stdout] 307 | | let w = Wrapper::new(&self.driver_type()?).and().in_array(&T::id_name(), &ids).check()?; [INFO] [stdout] 308 | | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] 309 | | } [INFO] [stdout] | |_____^ future returned by `__remove_batch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Send` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:308:16 [INFO] [stdout] | [INFO] [stdout] 303 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 308 | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 309 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> src/rbatis.rs:113:19 [INFO] [stdout] | [INFO] [stdout] 113 | pool: OnceCell::new(), [INFO] [stdout] | ^^^^^^^^^^^^^ cannot infer type for type parameter `T` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:303:110 [INFO] [stdout] | [INFO] [stdout] 303 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________________________^ [INFO] [stdout] 304 | | if ids.is_empty() { [INFO] [stdout] 305 | | return Ok(0); [INFO] [stdout] 306 | | } [INFO] [stdout] 307 | | let w = Wrapper::new(&self.driver_type()?).and().in_array(&T::id_name(), &ids).check()?; [INFO] [stdout] 308 | | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] 309 | | } [INFO] [stdout] | |_____^ future returned by `__remove_batch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:308:16 [INFO] [stdout] | [INFO] [stdout] 303 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 308 | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 309 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:347:94 [INFO] [stdout] | [INFO] [stdout] 347 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________^ [INFO] [stdout] 348 | | let map = json!(arg); [INFO] [stdout] 349 | | if !map.is_object() { [INFO] [stdout] 350 | | return Err(crate::core::Error::from("[rbatis] update_by_id() arg must be an object/struct!")); [INFO] [stdout] ... | [INFO] [stdout] 357 | | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id), false).await [INFO] [stdout] 358 | | } [INFO] [stdout] | |_____^ future returned by `__update_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, the trait `Sync` is not implemented for `*mut once_cell::imp::Waiter` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:357:9 [INFO] [stdout] | [INFO] [stdout] 347 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 357 | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id), false).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 358 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:347:94 [INFO] [stdout] | [INFO] [stdout] 347 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________^ [INFO] [stdout] 348 | | let map = json!(arg); [INFO] [stdout] 349 | | if !map.is_object() { [INFO] [stdout] 350 | | return Err(crate::core::Error::from("[rbatis] update_by_id() arg must be an object/struct!")); [INFO] [stdout] ... | [INFO] [stdout] 357 | | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id), false).await [INFO] [stdout] 358 | | } [INFO] [stdout] | |_____^ future returned by `__update_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:357:9 [INFO] [stdout] | [INFO] [stdout] 347 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 357 | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id), false).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 358 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:347:94 [INFO] [stdout] | [INFO] [stdout] 347 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________^ [INFO] [stdout] 348 | | let map = json!(arg); [INFO] [stdout] 349 | | if !map.is_object() { [INFO] [stdout] 350 | | return Err(crate::core::Error::from("[rbatis] update_by_id() arg must be an object/struct!")); [INFO] [stdout] ... | [INFO] [stdout] 357 | | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id), false).await [INFO] [stdout] 358 | | } [INFO] [stdout] | |_____^ future returned by `__update_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Send` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:357:9 [INFO] [stdout] | [INFO] [stdout] 347 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 357 | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id), false).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 358 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:347:94 [INFO] [stdout] | [INFO] [stdout] 347 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________^ [INFO] [stdout] 348 | | let map = json!(arg); [INFO] [stdout] 349 | | if !map.is_object() { [INFO] [stdout] 350 | | return Err(crate::core::Error::from("[rbatis] update_by_id() arg must be an object/struct!")); [INFO] [stdout] ... | [INFO] [stdout] 357 | | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id), false).await [INFO] [stdout] 358 | | } [INFO] [stdout] | |_____^ future returned by `__update_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:357:9 [INFO] [stdout] | [INFO] [stdout] 347 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 357 | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id), false).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 358 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:360:103 [INFO] [stdout] | [INFO] [stdout] 360 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 361 | | let mut updates = 0; [INFO] [stdout] 362 | | for x in args { [INFO] [stdout] 363 | | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] 364 | | } [INFO] [stdout] 365 | | Ok(updates) [INFO] [stdout] 366 | | } [INFO] [stdout] | |_____^ future returned by `__update_batch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, the trait `Sync` is not implemented for `*mut once_cell::imp::Waiter` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:363:24 [INFO] [stdout] | [INFO] [stdout] 360 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 363 | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] ... [INFO] [stdout] 366 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:360:103 [INFO] [stdout] | [INFO] [stdout] 360 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 361 | | let mut updates = 0; [INFO] [stdout] 362 | | for x in args { [INFO] [stdout] 363 | | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] 364 | | } [INFO] [stdout] 365 | | Ok(updates) [INFO] [stdout] 366 | | } [INFO] [stdout] | |_____^ future returned by `__update_batch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:363:24 [INFO] [stdout] | [INFO] [stdout] 360 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 363 | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] ... [INFO] [stdout] 366 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:303:110 [INFO] [stdout] | [INFO] [stdout] 303 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________________________^ [INFO] [stdout] 304 | | if ids.is_empty() { [INFO] [stdout] 305 | | return Ok(0); [INFO] [stdout] 306 | | } [INFO] [stdout] 307 | | let w = Wrapper::new(&self.driver_type()?).and().in_array(&T::id_name(), &ids).check()?; [INFO] [stdout] 308 | | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] 309 | | } [INFO] [stdout] | |_____^ future returned by `__remove_batch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, the trait `Sync` is not implemented for `*mut once_cell::imp::Waiter` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:308:16 [INFO] [stdout] | [INFO] [stdout] 303 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 308 | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 309 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:303:110 [INFO] [stdout] | [INFO] [stdout] 303 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________________________^ [INFO] [stdout] 304 | | if ids.is_empty() { [INFO] [stdout] 305 | | return Ok(0); [INFO] [stdout] 306 | | } [INFO] [stdout] 307 | | let w = Wrapper::new(&self.driver_type()?).and().in_array(&T::id_name(), &ids).check()?; [INFO] [stdout] 308 | | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] 309 | | } [INFO] [stdout] | |_____^ future returned by `__remove_batch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:308:16 [INFO] [stdout] | [INFO] [stdout] 303 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 308 | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 309 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:303:110 [INFO] [stdout] | [INFO] [stdout] 303 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________________________^ [INFO] [stdout] 304 | | if ids.is_empty() { [INFO] [stdout] 305 | | return Ok(0); [INFO] [stdout] 306 | | } [INFO] [stdout] 307 | | let w = Wrapper::new(&self.driver_type()?).and().in_array(&T::id_name(), &ids).check()?; [INFO] [stdout] 308 | | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] 309 | | } [INFO] [stdout] | |_____^ future returned by `__remove_batch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Send` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:308:16 [INFO] [stdout] | [INFO] [stdout] 303 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 308 | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 309 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:360:103 [INFO] [stdout] | [INFO] [stdout] 360 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 361 | | let mut updates = 0; [INFO] [stdout] 362 | | for x in args { [INFO] [stdout] 363 | | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] 364 | | } [INFO] [stdout] 365 | | Ok(updates) [INFO] [stdout] 366 | | } [INFO] [stdout] | |_____^ future returned by `__update_batch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Send` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:363:24 [INFO] [stdout] | [INFO] [stdout] 360 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 363 | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] ... [INFO] [stdout] 366 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:303:110 [INFO] [stdout] | [INFO] [stdout] 303 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________________________^ [INFO] [stdout] 304 | | if ids.is_empty() { [INFO] [stdout] 305 | | return Ok(0); [INFO] [stdout] 306 | | } [INFO] [stdout] 307 | | let w = Wrapper::new(&self.driver_type()?).and().in_array(&T::id_name(), &ids).check()?; [INFO] [stdout] 308 | | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] 309 | | } [INFO] [stdout] | |_____^ future returned by `__remove_batch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:308:16 [INFO] [stdout] | [INFO] [stdout] 303 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 308 | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 309 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:360:103 [INFO] [stdout] | [INFO] [stdout] 360 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 361 | | let mut updates = 0; [INFO] [stdout] 362 | | for x in args { [INFO] [stdout] 363 | | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] 364 | | } [INFO] [stdout] 365 | | Ok(updates) [INFO] [stdout] 366 | | } [INFO] [stdout] | |_____^ future returned by `__update_batch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:363:24 [INFO] [stdout] | [INFO] [stdout] 360 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 363 | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] ... [INFO] [stdout] 366 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:368:100 [INFO] [stdout] | [INFO] [stdout] 368 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ____________________________________________________________________________________________________^ [INFO] [stdout] 369 | | let w = w.clone().check()?; [INFO] [stdout] 370 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 371 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 372 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, the trait `Sync` is not implemented for `*mut once_cell::imp::Waiter` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:371:16 [INFO] [stdout] | [INFO] [stdout] 368 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 371 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 372 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:347:94 [INFO] [stdout] | [INFO] [stdout] 347 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________^ [INFO] [stdout] 348 | | let map = json!(arg); [INFO] [stdout] 349 | | if !map.is_object() { [INFO] [stdout] 350 | | return Err(crate::core::Error::from("[rbatis] update_by_id() arg must be an object/struct!")); [INFO] [stdout] ... | [INFO] [stdout] 357 | | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id), false).await [INFO] [stdout] 358 | | } [INFO] [stdout] | |_____^ future returned by `__update_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, the trait `Sync` is not implemented for `*mut once_cell::imp::Waiter` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:357:9 [INFO] [stdout] | [INFO] [stdout] 347 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 357 | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id), false).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 358 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:368:100 [INFO] [stdout] | [INFO] [stdout] 368 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ____________________________________________________________________________________________________^ [INFO] [stdout] 369 | | let w = w.clone().check()?; [INFO] [stdout] 370 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 371 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 372 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:371:16 [INFO] [stdout] | [INFO] [stdout] 368 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 371 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 372 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:347:94 [INFO] [stdout] | [INFO] [stdout] 347 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________^ [INFO] [stdout] 348 | | let map = json!(arg); [INFO] [stdout] 349 | | if !map.is_object() { [INFO] [stdout] 350 | | return Err(crate::core::Error::from("[rbatis] update_by_id() arg must be an object/struct!")); [INFO] [stdout] ... | [INFO] [stdout] 357 | | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id), false).await [INFO] [stdout] 358 | | } [INFO] [stdout] | |_____^ future returned by `__update_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:357:9 [INFO] [stdout] | [INFO] [stdout] 347 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 357 | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id), false).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 358 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:368:100 [INFO] [stdout] | [INFO] [stdout] 368 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ____________________________________________________________________________________________________^ [INFO] [stdout] 369 | | let w = w.clone().check()?; [INFO] [stdout] 370 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 371 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 372 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Send` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:371:16 [INFO] [stdout] | [INFO] [stdout] 368 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 371 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 372 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:347:94 [INFO] [stdout] | [INFO] [stdout] 347 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________^ [INFO] [stdout] 348 | | let map = json!(arg); [INFO] [stdout] 349 | | if !map.is_object() { [INFO] [stdout] 350 | | return Err(crate::core::Error::from("[rbatis] update_by_id() arg must be an object/struct!")); [INFO] [stdout] ... | [INFO] [stdout] 357 | | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id), false).await [INFO] [stdout] 358 | | } [INFO] [stdout] | |_____^ future returned by `__update_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Send` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:357:9 [INFO] [stdout] | [INFO] [stdout] 347 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 357 | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id), false).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 358 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:368:100 [INFO] [stdout] | [INFO] [stdout] 368 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ____________________________________________________________________________________________________^ [INFO] [stdout] 369 | | let w = w.clone().check()?; [INFO] [stdout] 370 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 371 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 372 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:371:16 [INFO] [stdout] | [INFO] [stdout] 368 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 371 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 372 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:347:94 [INFO] [stdout] | [INFO] [stdout] 347 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________^ [INFO] [stdout] 348 | | let map = json!(arg); [INFO] [stdout] 349 | | if !map.is_object() { [INFO] [stdout] 350 | | return Err(crate::core::Error::from("[rbatis] update_by_id() arg must be an object/struct!")); [INFO] [stdout] ... | [INFO] [stdout] 357 | | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id), false).await [INFO] [stdout] 358 | | } [INFO] [stdout] | |_____^ future returned by `__update_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:357:9 [INFO] [stdout] | [INFO] [stdout] 347 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 357 | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id), false).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 358 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:374:98 [INFO] [stdout] | [INFO] [stdout] 374 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________^ [INFO] [stdout] 375 | | let w = Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id).check()?; [INFO] [stdout] 376 | | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] 377 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, the trait `Sync` is not implemented for `*mut once_cell::imp::Waiter` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:376:16 [INFO] [stdout] | [INFO] [stdout] 374 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 375 | let w = Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id).check()?; [INFO] [stdout] 376 | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 377 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:360:103 [INFO] [stdout] | [INFO] [stdout] 360 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 361 | | let mut updates = 0; [INFO] [stdout] 362 | | for x in args { [INFO] [stdout] 363 | | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] 364 | | } [INFO] [stdout] 365 | | Ok(updates) [INFO] [stdout] 366 | | } [INFO] [stdout] | |_____^ future returned by `__update_batch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, the trait `Sync` is not implemented for `*mut once_cell::imp::Waiter` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:363:24 [INFO] [stdout] | [INFO] [stdout] 360 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 363 | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] ... [INFO] [stdout] 366 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:374:98 [INFO] [stdout] | [INFO] [stdout] 374 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________^ [INFO] [stdout] 375 | | let w = Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id).check()?; [INFO] [stdout] 376 | | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] 377 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:376:16 [INFO] [stdout] | [INFO] [stdout] 374 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 375 | let w = Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id).check()?; [INFO] [stdout] 376 | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 377 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:360:103 [INFO] [stdout] | [INFO] [stdout] 360 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 361 | | let mut updates = 0; [INFO] [stdout] 362 | | for x in args { [INFO] [stdout] 363 | | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] 364 | | } [INFO] [stdout] 365 | | Ok(updates) [INFO] [stdout] 366 | | } [INFO] [stdout] | |_____^ future returned by `__update_batch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:363:24 [INFO] [stdout] | [INFO] [stdout] 360 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 363 | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] ... [INFO] [stdout] 366 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:374:98 [INFO] [stdout] | [INFO] [stdout] 374 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________^ [INFO] [stdout] 375 | | let w = Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id).check()?; [INFO] [stdout] 376 | | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] 377 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Send` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:376:16 [INFO] [stdout] | [INFO] [stdout] 374 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 375 | let w = Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id).check()?; [INFO] [stdout] 376 | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 377 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:374:98 [INFO] [stdout] | [INFO] [stdout] 374 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________^ [INFO] [stdout] 375 | | let w = Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id).check()?; [INFO] [stdout] 376 | | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] 377 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:376:16 [INFO] [stdout] | [INFO] [stdout] 374 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 375 | let w = Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id).check()?; [INFO] [stdout] 376 | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 377 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:360:103 [INFO] [stdout] | [INFO] [stdout] 360 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 361 | | let mut updates = 0; [INFO] [stdout] 362 | | for x in args { [INFO] [stdout] 363 | | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] 364 | | } [INFO] [stdout] 365 | | Ok(updates) [INFO] [stdout] 366 | | } [INFO] [stdout] | |_____^ future returned by `__update_batch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Send` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:363:24 [INFO] [stdout] | [INFO] [stdout] 360 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 363 | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] ... [INFO] [stdout] 366 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:360:103 [INFO] [stdout] | [INFO] [stdout] 360 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 361 | | let mut updates = 0; [INFO] [stdout] 362 | | for x in args { [INFO] [stdout] 363 | | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] 364 | | } [INFO] [stdout] 365 | | Ok(updates) [INFO] [stdout] 366 | | } [INFO] [stdout] | |_____^ future returned by `__update_batch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:363:24 [INFO] [stdout] | [INFO] [stdout] 360 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 363 | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] ... [INFO] [stdout] 366 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:379:104 [INFO] [stdout] | [INFO] [stdout] 379 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________^ [INFO] [stdout] 380 | | let w = w.clone().check()?; [INFO] [stdout] 381 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 382 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 383 | | } [INFO] [stdout] | |_____^ future returned by `__list_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, the trait `Sync` is not implemented for `*mut once_cell::imp::Waiter` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:382:16 [INFO] [stdout] | [INFO] [stdout] 379 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 382 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 383 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:379:104 [INFO] [stdout] | [INFO] [stdout] 379 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________^ [INFO] [stdout] 380 | | let w = w.clone().check()?; [INFO] [stdout] 381 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 382 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 383 | | } [INFO] [stdout] | |_____^ future returned by `__list_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:382:16 [INFO] [stdout] | [INFO] [stdout] 379 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 382 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 383 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:368:100 [INFO] [stdout] | [INFO] [stdout] 368 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ____________________________________________________________________________________________________^ [INFO] [stdout] 369 | | let w = w.clone().check()?; [INFO] [stdout] 370 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 371 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 372 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, the trait `Sync` is not implemented for `*mut once_cell::imp::Waiter` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:371:16 [INFO] [stdout] | [INFO] [stdout] 368 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 371 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 372 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:379:104 [INFO] [stdout] | [INFO] [stdout] 379 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________^ [INFO] [stdout] 380 | | let w = w.clone().check()?; [INFO] [stdout] 381 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 382 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 383 | | } [INFO] [stdout] | |_____^ future returned by `__list_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Send` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:382:16 [INFO] [stdout] | [INFO] [stdout] 379 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 382 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 383 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:368:100 [INFO] [stdout] | [INFO] [stdout] 368 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ____________________________________________________________________________________________________^ [INFO] [stdout] 369 | | let w = w.clone().check()?; [INFO] [stdout] 370 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 371 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 372 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:371:16 [INFO] [stdout] | [INFO] [stdout] 368 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 371 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 372 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:379:104 [INFO] [stdout] | [INFO] [stdout] 379 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________^ [INFO] [stdout] 380 | | let w = w.clone().check()?; [INFO] [stdout] 381 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 382 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 383 | | } [INFO] [stdout] | |_____^ future returned by `__list_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:382:16 [INFO] [stdout] | [INFO] [stdout] 379 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 382 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 383 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:368:100 [INFO] [stdout] | [INFO] [stdout] 368 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ____________________________________________________________________________________________________^ [INFO] [stdout] 369 | | let w = w.clone().check()?; [INFO] [stdout] 370 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 371 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 372 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Send` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:371:16 [INFO] [stdout] | [INFO] [stdout] 368 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 371 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 372 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:368:100 [INFO] [stdout] | [INFO] [stdout] 368 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ____________________________________________________________________________________________________^ [INFO] [stdout] 369 | | let w = w.clone().check()?; [INFO] [stdout] 370 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 371 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 372 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:371:16 [INFO] [stdout] | [INFO] [stdout] 368 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 371 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 372 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:385:80 [INFO] [stdout] | [INFO] [stdout] 385 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 386 | | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] 387 | | } [INFO] [stdout] | |_____^ future returned by `__list` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, the trait `Sync` is not implemented for `*mut once_cell::imp::Waiter` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:386:16 [INFO] [stdout] | [INFO] [stdout] 385 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 386 | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 387 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:374:98 [INFO] [stdout] | [INFO] [stdout] 374 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________^ [INFO] [stdout] 375 | | let w = Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id).check()?; [INFO] [stdout] 376 | | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] 377 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, the trait `Sync` is not implemented for `*mut once_cell::imp::Waiter` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:376:16 [INFO] [stdout] | [INFO] [stdout] 374 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 375 | let w = Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id).check()?; [INFO] [stdout] 376 | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 377 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:385:80 [INFO] [stdout] | [INFO] [stdout] 385 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 386 | | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] 387 | | } [INFO] [stdout] | |_____^ future returned by `__list` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:386:16 [INFO] [stdout] | [INFO] [stdout] 385 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 386 | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 387 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:374:98 [INFO] [stdout] | [INFO] [stdout] 374 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________^ [INFO] [stdout] 375 | | let w = Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id).check()?; [INFO] [stdout] 376 | | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] 377 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:376:16 [INFO] [stdout] | [INFO] [stdout] 374 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 375 | let w = Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id).check()?; [INFO] [stdout] 376 | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 377 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:385:80 [INFO] [stdout] | [INFO] [stdout] 385 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 386 | | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] 387 | | } [INFO] [stdout] | |_____^ future returned by `__list` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Send` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:386:16 [INFO] [stdout] | [INFO] [stdout] 385 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 386 | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 387 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:374:98 [INFO] [stdout] | [INFO] [stdout] 374 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________^ [INFO] [stdout] 375 | | let w = Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id).check()?; [INFO] [stdout] 376 | | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] 377 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Send` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:376:16 [INFO] [stdout] | [INFO] [stdout] 374 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 375 | let w = Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id).check()?; [INFO] [stdout] 376 | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 377 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:385:80 [INFO] [stdout] | [INFO] [stdout] 385 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 386 | | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] 387 | | } [INFO] [stdout] | |_____^ future returned by `__list` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:386:16 [INFO] [stdout] | [INFO] [stdout] 385 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 386 | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 387 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:374:98 [INFO] [stdout] | [INFO] [stdout] 374 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________^ [INFO] [stdout] 375 | | let w = Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id).check()?; [INFO] [stdout] 376 | | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] 377 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:376:16 [INFO] [stdout] | [INFO] [stdout] 374 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 375 | let w = Wrapper::new(&self.driver_type()?).eq(&T::id_name(), id).check()?; [INFO] [stdout] 376 | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 377 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:389:106 [INFO] [stdout] | [INFO] [stdout] 389 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________________^ [INFO] [stdout] 390 | | let w = Wrapper::new(&self.driver_type()?).in_array(&T::id_name(), ids).check()?; [INFO] [stdout] 391 | | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] 392 | | } [INFO] [stdout] | |_____^ future returned by `__list_by_ids` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, the trait `Sync` is not implemented for `*mut once_cell::imp::Waiter` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:391:16 [INFO] [stdout] | [INFO] [stdout] 389 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 390 | let w = Wrapper::new(&self.driver_type()?).in_array(&T::id_name(), ids).check()?; [INFO] [stdout] 391 | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 392 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:379:104 [INFO] [stdout] | [INFO] [stdout] 379 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________^ [INFO] [stdout] 380 | | let w = w.clone().check()?; [INFO] [stdout] 381 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 382 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 383 | | } [INFO] [stdout] | |_____^ future returned by `__list_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, the trait `Sync` is not implemented for `*mut once_cell::imp::Waiter` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:382:16 [INFO] [stdout] | [INFO] [stdout] 379 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 382 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 383 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:389:106 [INFO] [stdout] | [INFO] [stdout] 389 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________________^ [INFO] [stdout] 390 | | let w = Wrapper::new(&self.driver_type()?).in_array(&T::id_name(), ids).check()?; [INFO] [stdout] 391 | | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] 392 | | } [INFO] [stdout] | |_____^ future returned by `__list_by_ids` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:391:16 [INFO] [stdout] | [INFO] [stdout] 389 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 390 | let w = Wrapper::new(&self.driver_type()?).in_array(&T::id_name(), ids).check()?; [INFO] [stdout] 391 | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 392 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:379:104 [INFO] [stdout] | [INFO] [stdout] 379 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________^ [INFO] [stdout] 380 | | let w = w.clone().check()?; [INFO] [stdout] 381 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 382 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 383 | | } [INFO] [stdout] | |_____^ future returned by `__list_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:382:16 [INFO] [stdout] | [INFO] [stdout] 379 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 382 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 383 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:389:106 [INFO] [stdout] | [INFO] [stdout] 389 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________________^ [INFO] [stdout] 390 | | let w = Wrapper::new(&self.driver_type()?).in_array(&T::id_name(), ids).check()?; [INFO] [stdout] 391 | | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] 392 | | } [INFO] [stdout] | |_____^ future returned by `__list_by_ids` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Send` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:391:16 [INFO] [stdout] | [INFO] [stdout] 389 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 390 | let w = Wrapper::new(&self.driver_type()?).in_array(&T::id_name(), ids).check()?; [INFO] [stdout] 391 | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 392 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:379:104 [INFO] [stdout] | [INFO] [stdout] 379 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________^ [INFO] [stdout] 380 | | let w = w.clone().check()?; [INFO] [stdout] 381 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 382 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 383 | | } [INFO] [stdout] | |_____^ future returned by `__list_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Send` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:382:16 [INFO] [stdout] | [INFO] [stdout] 379 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 382 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 383 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:389:106 [INFO] [stdout] | [INFO] [stdout] 389 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________________^ [INFO] [stdout] 390 | | let w = Wrapper::new(&self.driver_type()?).in_array(&T::id_name(), ids).check()?; [INFO] [stdout] 391 | | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] 392 | | } [INFO] [stdout] | |_____^ future returned by `__list_by_ids` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:391:16 [INFO] [stdout] | [INFO] [stdout] 389 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 390 | let w = Wrapper::new(&self.driver_type()?).in_array(&T::id_name(), ids).check()?; [INFO] [stdout] 391 | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 392 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:379:104 [INFO] [stdout] | [INFO] [stdout] 379 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________^ [INFO] [stdout] 380 | | let w = w.clone().check()?; [INFO] [stdout] 381 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 382 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 383 | | } [INFO] [stdout] | |_____^ future returned by `__list_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:382:16 [INFO] [stdout] | [INFO] [stdout] 379 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 382 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 383 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:394:136 [INFO] [stdout] | [INFO] [stdout] 394 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 395 | | let w = w.clone().check()?; [INFO] [stdout] 396 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 397 | | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] 398 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_page_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, the trait `Sync` is not implemented for `*mut once_cell::imp::Waiter` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:397:9 [INFO] [stdout] | [INFO] [stdout] 394 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 397 | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 398 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:385:80 [INFO] [stdout] | [INFO] [stdout] 385 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 386 | | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] 387 | | } [INFO] [stdout] | |_____^ future returned by `__list` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, the trait `Sync` is not implemented for `*mut once_cell::imp::Waiter` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:386:16 [INFO] [stdout] | [INFO] [stdout] 385 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 386 | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 387 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:394:136 [INFO] [stdout] | [INFO] [stdout] 394 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 395 | | let w = w.clone().check()?; [INFO] [stdout] 396 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 397 | | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] 398 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_page_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:397:9 [INFO] [stdout] | [INFO] [stdout] 394 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 397 | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 398 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:385:80 [INFO] [stdout] | [INFO] [stdout] 385 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 386 | | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] 387 | | } [INFO] [stdout] | |_____^ future returned by `__list` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:386:16 [INFO] [stdout] | [INFO] [stdout] 385 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 386 | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 387 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:394:136 [INFO] [stdout] | [INFO] [stdout] 394 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 395 | | let w = w.clone().check()?; [INFO] [stdout] 396 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 397 | | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] 398 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_page_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Send` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:397:9 [INFO] [stdout] | [INFO] [stdout] 394 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 397 | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 398 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:385:80 [INFO] [stdout] | [INFO] [stdout] 385 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 386 | | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] 387 | | } [INFO] [stdout] | |_____^ future returned by `__list` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Send` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:386:16 [INFO] [stdout] | [INFO] [stdout] 385 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 386 | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 387 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:394:136 [INFO] [stdout] | [INFO] [stdout] 394 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 395 | | let w = w.clone().check()?; [INFO] [stdout] 396 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 397 | | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] 398 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_page_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:397:9 [INFO] [stdout] | [INFO] [stdout] 394 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 397 | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 398 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:385:80 [INFO] [stdout] | [INFO] [stdout] 385 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 386 | | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] 387 | | } [INFO] [stdout] | |_____^ future returned by `__list` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:386:16 [INFO] [stdout] | [INFO] [stdout] 385 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 386 | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 387 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:389:106 [INFO] [stdout] | [INFO] [stdout] 389 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________________^ [INFO] [stdout] 390 | | let w = Wrapper::new(&self.driver_type()?).in_array(&T::id_name(), ids).check()?; [INFO] [stdout] 391 | | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] 392 | | } [INFO] [stdout] | |_____^ future returned by `__list_by_ids` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, the trait `Sync` is not implemented for `*mut once_cell::imp::Waiter` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:391:16 [INFO] [stdout] | [INFO] [stdout] 389 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 390 | let w = Wrapper::new(&self.driver_type()?).in_array(&T::id_name(), ids).check()?; [INFO] [stdout] 391 | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 392 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:389:106 [INFO] [stdout] | [INFO] [stdout] 389 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________________^ [INFO] [stdout] 390 | | let w = Wrapper::new(&self.driver_type()?).in_array(&T::id_name(), ids).check()?; [INFO] [stdout] 391 | | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] 392 | | } [INFO] [stdout] | |_____^ future returned by `__list_by_ids` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:391:16 [INFO] [stdout] | [INFO] [stdout] 389 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 390 | let w = Wrapper::new(&self.driver_type()?).in_array(&T::id_name(), ids).check()?; [INFO] [stdout] 391 | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 392 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:389:106 [INFO] [stdout] | [INFO] [stdout] 389 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________________^ [INFO] [stdout] 390 | | let w = Wrapper::new(&self.driver_type()?).in_array(&T::id_name(), ids).check()?; [INFO] [stdout] 391 | | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] 392 | | } [INFO] [stdout] | |_____^ future returned by `__list_by_ids` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Send` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:391:16 [INFO] [stdout] | [INFO] [stdout] 389 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 390 | let w = Wrapper::new(&self.driver_type()?).in_array(&T::id_name(), ids).check()?; [INFO] [stdout] 391 | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 392 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:389:106 [INFO] [stdout] | [INFO] [stdout] 389 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________________^ [INFO] [stdout] 390 | | let w = Wrapper::new(&self.driver_type()?).in_array(&T::id_name(), ids).check()?; [INFO] [stdout] 391 | | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] 392 | | } [INFO] [stdout] | |_____^ future returned by `__list_by_ids` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:391:16 [INFO] [stdout] | [INFO] [stdout] 389 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 390 | let w = Wrapper::new(&self.driver_type()?).in_array(&T::id_name(), ids).check()?; [INFO] [stdout] 391 | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 392 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:394:136 [INFO] [stdout] | [INFO] [stdout] 394 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 395 | | let w = w.clone().check()?; [INFO] [stdout] 396 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 397 | | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] 398 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_page_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, the trait `Sync` is not implemented for `*mut once_cell::imp::Waiter` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:397:9 [INFO] [stdout] | [INFO] [stdout] 394 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 397 | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 398 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:394:136 [INFO] [stdout] | [INFO] [stdout] 394 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 395 | | let w = w.clone().check()?; [INFO] [stdout] 396 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 397 | | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] 398 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_page_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:397:9 [INFO] [stdout] | [INFO] [stdout] 394 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 397 | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 398 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:394:136 [INFO] [stdout] | [INFO] [stdout] 394 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 395 | | let w = w.clone().check()?; [INFO] [stdout] 396 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 397 | | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] 398 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_page_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Send` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:397:9 [INFO] [stdout] | [INFO] [stdout] 394 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 397 | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 398 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:394:136 [INFO] [stdout] | [INFO] [stdout] 394 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 395 | | let w = w.clone().check()?; [INFO] [stdout] 396 | | let sql = make_select_sql::(&self, &w)?; [INFO] [stdout] 397 | | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] 398 | | } [INFO] [stdout] | |_____^ future returned by `__fetch_page_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `TxManager`, the trait `Sync` is not implemented for `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:397:9 [INFO] [stdout] | [INFO] [stdout] 394 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 397 | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 398 | } [INFO] [stdout] | - `self` is later dropped here [INFO] [stdout] = note: required for the cast to the object type `dyn Future, rbatis_core::Error>> + Send` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:99:34 [INFO] [stdout] | [INFO] [stdout] 99 | for tx_id in &rollback_ids { [INFO] [stdout] | ^^^^^^^^^^^^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] = note: required because of the requirements on the impl of `Iterator` for `std::slice::Iter<'_, str>` [INFO] [stdout] = note: required by `std::iter::Iterator::next` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:96:38 [INFO] [stdout] | [INFO] [stdout] 96 | rollback_ids.push(k.to_string()); [INFO] [stdout] | ^^^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:94:44 [INFO] [stdout] | [INFO] [stdout] 94 | let mut rollback_ids = vec![]; [INFO] [stdout] | ^^^^^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] = note: required by `Vec::::new` [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:116:50 [INFO] [stdout] | [INFO] [stdout] 116 | ... if need_rollback == None { [INFO] [stdout] | ^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] = note: required because of the requirements on the impl of `PartialEq` for `Vec` [INFO] [stdout] = note: 1 redundant requirements hidden [INFO] [stdout] = note: required because of the requirements on the impl of `PartialEq` for `std::option::Option>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:110:41 [INFO] [stdout] | [INFO] [stdout] 110 | let mut need_rollback = None; [INFO] [stdout] | ^^^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:116:53 [INFO] [stdout] | [INFO] [stdout] 116 | ... if need_rollback == None { [INFO] [stdout] | ^^^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:121:43 [INFO] [stdout] | [INFO] [stdout] 121 | ... v.push(k.to_string()); [INFO] [stdout] | ^^^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:133:38 [INFO] [stdout] | [INFO] [stdout] 133 | for tx_id in v { [INFO] [stdout] | ^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] = note: required because of the requirements on the impl of `IntoIterator` for `&mut Vec` [INFO] [stdout] = note: required by `into_iter` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:117:53 [INFO] [stdout] | [INFO] [stdout] 117 | ... need_rollback = Some(vec![]); [INFO] [stdout] | ^^^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:117:58 [INFO] [stdout] | [INFO] [stdout] 117 | ... need_rollback = Some(vec![]); [INFO] [stdout] | ^^^^^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] = note: required by `Vec::::new` [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 62 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0277, E0282, E0423, E0432, E0698. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0277`. [INFO] [stdout] [INFO] [stderr] error: could not compile `rbatis` [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:99:34 [INFO] [stdout] | [INFO] [stdout] 99 | for tx_id in &rollback_ids { [INFO] [stdout] | ^^^^^^^^^^^^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] = note: required because of the requirements on the impl of `Iterator` for `std::slice::Iter<'_, str>` [INFO] [stdout] = note: required by `std::iter::Iterator::next` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:96:38 [INFO] [stdout] | [INFO] [stdout] 96 | rollback_ids.push(k.to_string()); [INFO] [stdout] | ^^^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:94:44 [INFO] [stdout] | [INFO] [stdout] 94 | let mut rollback_ids = vec![]; [INFO] [stdout] | ^^^^^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] = note: required by `Vec::::new` [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:116:50 [INFO] [stdout] | [INFO] [stdout] 116 | ... if need_rollback == None { [INFO] [stdout] | ^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] = note: required because of the requirements on the impl of `PartialEq` for `Vec` [INFO] [stdout] = note: 1 redundant requirements hidden [INFO] [stdout] = note: required because of the requirements on the impl of `PartialEq` for `std::option::Option>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:110:41 [INFO] [stdout] | [INFO] [stdout] 110 | let mut need_rollback = None; [INFO] [stdout] | ^^^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:116:53 [INFO] [stdout] | [INFO] [stdout] 116 | ... if need_rollback == None { [INFO] [stdout] | ^^^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:121:43 [INFO] [stdout] | [INFO] [stdout] 121 | ... v.push(k.to_string()); [INFO] [stdout] | ^^^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:133:38 [INFO] [stdout] | [INFO] [stdout] 133 | for tx_id in v { [INFO] [stdout] | ^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] = note: required because of the requirements on the impl of `IntoIterator` for `&mut Vec` [INFO] [stdout] = note: required by `into_iter` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:117:53 [INFO] [stdout] | [INFO] [stdout] 117 | ... need_rollback = Some(vec![]); [INFO] [stdout] | ^^^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time [INFO] [stdout] --> src/tx.rs:117:58 [INFO] [stdout] | [INFO] [stdout] 117 | ... need_rollback = Some(vec![]); [INFO] [stdout] | ^^^^^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `str` [INFO] [stdout] = note: required by `Vec::::new` [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 62 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0277, E0282, E0423, E0432, E0698. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0277`. [INFO] [stdout] [INFO] [stderr] error: build failed [INFO] running `Command { std: "docker" "inspect" "3a21a51b310b8c2c5f847ac9f83e8d8a340047afd5cc92738f57fbcb70f9b320", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3a21a51b310b8c2c5f847ac9f83e8d8a340047afd5cc92738f57fbcb70f9b320", kill_on_drop: false }` [INFO] [stdout] 3a21a51b310b8c2c5f847ac9f83e8d8a340047afd5cc92738f57fbcb70f9b320