[INFO] fetching crate rbatis 1.7.26... [INFO] checking rbatis-1.7.26 against master#0dce3f606e05cffab7361c132a399d3550ab0df8 for pr-78376 [INFO] extracting crate rbatis 1.7.26 into /workspace/builds/worker-1/source [INFO] validating manifest of crates.io crate rbatis 1.7.26 on toolchain 0dce3f606e05cffab7361c132a399d3550ab0df8 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+0dce3f606e05cffab7361c132a399d3550ab0df8" "read-manifest" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] started tweaking crates.io crate rbatis 1.7.26 [INFO] finished tweaking crates.io crate rbatis 1.7.26 [INFO] tweaked toml for crates.io crate rbatis 1.7.26 written to /workspace/builds/worker-1/source/Cargo.toml [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+0dce3f606e05cffab7361c132a399d3550ab0df8" "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" "+0dce3f606e05cffab7361c132a399d3550ab0df8" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/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:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+0dce3f606e05cffab7361c132a399d3550ab0df8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] a2359df969c1ead765a02b059b83cd2305cc67f4fdf6c71db99d1052d465634e [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" "a2359df969c1ead765a02b059b83cd2305cc67f4fdf6c71db99d1052d465634e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "a2359df969c1ead765a02b059b83cd2305cc67f4fdf6c71db99d1052d465634e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a2359df969c1ead765a02b059b83cd2305cc67f4fdf6c71db99d1052d465634e", kill_on_drop: false }` [INFO] [stdout] a2359df969c1ead765a02b059b83cd2305cc67f4fdf6c71db99d1052d465634e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/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:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+0dce3f606e05cffab7361c132a399d3550ab0df8" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] e072c6c52b45bf9156714b356b08a7ea77fc33b66ab6326d892d9b233f8f8d8e [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" "e072c6c52b45bf9156714b356b08a7ea77fc33b66ab6326d892d9b233f8f8d8e", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.24 [INFO] [stderr] Compiling unicode-xid v0.2.1 [INFO] [stderr] Compiling syn v1.0.48 [INFO] [stderr] Checking spin v0.5.2 [INFO] [stderr] Compiling memchr v2.3.4 [INFO] [stderr] Compiling serde_derive v1.0.117 [INFO] [stderr] Checking futures-core v0.3.7 [INFO] [stderr] Compiling pkg-config v0.3.19 [INFO] [stderr] Compiling cc v1.0.61 [INFO] [stderr] Checking once_cell v1.4.1 [INFO] [stderr] Compiling typenum v1.12.0 [INFO] [stderr] Compiling log v0.4.11 [INFO] [stderr] Checking cache-padded v1.1.1 [INFO] [stderr] Checking fastrand v1.4.0 [INFO] [stderr] Checking futures-io v0.3.7 [INFO] [stderr] Checking waker-fn v1.1.0 [INFO] [stderr] Checking pin-project-lite v0.1.11 [INFO] [stderr] Checking parking v2.0.0 [INFO] [stderr] Compiling proc-macro-hack v0.5.19 [INFO] [stderr] Checking async-task v4.0.3 [INFO] [stderr] Checking event-listener v2.5.1 [INFO] [stderr] Checking vec-arena v1.0.0 [INFO] [stderr] Compiling libm v0.2.1 [INFO] [stderr] Checking regex-syntax v0.6.20 [INFO] [stderr] Compiling byteorder v1.3.4 [INFO] [stderr] Compiling ryu v1.0.5 [INFO] [stderr] Checking smallvec v1.4.2 [INFO] [stderr] Checking atomic-waker v1.0.0 [INFO] [stderr] Checking pin-utils v0.1.0 [INFO] [stderr] Compiling autocfg v0.1.7 [INFO] [stderr] Checking opaque-debug v0.3.0 [INFO] [stderr] Checking cpuid-bool v0.1.2 [INFO] [stderr] Compiling const_fn v0.4.2 [INFO] [stderr] Checking subtle v2.3.0 [INFO] [stderr] Compiling proc-macro-nested v0.1.6 [INFO] [stderr] Compiling serde_json v1.0.59 [INFO] [stderr] Checking cfg-if v1.0.0 [INFO] [stderr] Checking base64 v0.12.3 [INFO] [stderr] Checking futures-sink v0.3.7 [INFO] [stderr] Checking scopeguard v1.1.0 [INFO] [stderr] Compiling encoding_rs v0.8.24 [INFO] [stderr] Checking itoa v0.4.6 [INFO] [stderr] Checking maplit v1.0.2 [INFO] [stderr] Checking ahash v0.3.8 [INFO] [stderr] Checking hex v0.4.2 [INFO] [stderr] Checking ipnetwork v0.17.0 [INFO] [stderr] Checking xml-rs v0.8.3 [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 standback v0.2.11 [INFO] [stderr] Compiling num-bigint v0.2.6 [INFO] [stderr] Compiling time v0.2.22 [INFO] [stderr] Compiling hashbrown v0.8.2 [INFO] [stderr] Compiling num-bigint v0.3.0 [INFO] [stderr] Checking concurrent-queue v1.2.2 [INFO] [stderr] Checking lazy_static v1.4.0 [INFO] [stderr] Checking futures-task v0.3.7 [INFO] [stderr] Checking async-mutex v1.4.0 [INFO] [stderr] Checking lru-cache v0.1.2 [INFO] [stderr] Checking instant v0.1.8 [INFO] [stderr] Checking futures-channel v0.3.7 [INFO] [stderr] Checking lock_api v0.4.1 [INFO] [stderr] Checking idna v0.2.0 [INFO] [stderr] Checking stringprep v0.1.2 [INFO] [stderr] Checking thread_local v1.0.1 [INFO] [stderr] Compiling num-bigint-dig v0.6.0 [INFO] [stderr] Checking async-channel v1.5.1 [INFO] [stderr] Checking getrandom v0.1.15 [INFO] [stderr] Checking nb-connect v1.0.2 [INFO] [stderr] Checking time v0.1.44 [INFO] [stderr] Checking num_cpus v1.13.0 [INFO] [stderr] Checking parking_lot_core v0.8.0 [INFO] [stderr] Checking futures-lite v1.11.2 [INFO] [stderr] Checking aho-corasick v0.7.14 [INFO] [stderr] Checking url v2.1.1 [INFO] [stderr] Checking polling v2.0.2 [INFO] [stderr] Checking kv-log-macro v1.0.7 [INFO] [stderr] Checking rand_core v0.5.1 [INFO] [stderr] Checking parking_lot v0.11.0 [INFO] [stderr] Compiling quote v1.0.7 [INFO] [stderr] Checking crossbeam-channel v0.4.4 [INFO] [stderr] Checking crossbeam-queue v0.2.3 [INFO] [stderr] Checking rand_chacha v0.2.2 [INFO] [stderr] Checking generic-array v0.14.4 [INFO] [stderr] Compiling openssl-sys v0.9.58 [INFO] [stderr] Compiling libsqlite3-sys v0.18.0 [INFO] [stderr] Checking rand v0.7.3 [INFO] [stderr] Checking atoi v0.3.3 [INFO] [stderr] Checking async-io v1.1.10 [INFO] [stderr] Checking async-executor v1.3.0 [INFO] [stderr] Checking blocking v1.0.2 [INFO] [stderr] Checking digest v0.9.0 [INFO] [stderr] Checking block-buffer v0.9.0 [INFO] [stderr] Checking crypto-mac v0.8.0 [INFO] [stderr] Checking hmac v0.8.1 [INFO] [stderr] Checking sha2 v0.9.1 [INFO] [stderr] Checking md-5 v0.9.1 [INFO] [stderr] Checking sha-1 v0.9.1 [INFO] [stderr] Checking num-iter v0.1.42 [INFO] [stderr] Checking regex v1.4.1 [INFO] [stderr] Checking async-global-executor v1.4.3 [INFO] [stderr] Checking async-std v1.6.5 [INFO] [stderr] Compiling openssl v0.10.30 [INFO] [stderr] Compiling native-tls v0.2.4 [INFO] [stderr] Checking bigdecimal v0.1.2 [INFO] [stderr] Checking pem v0.8.1 [INFO] [stderr] Checking sqlformat v0.1.1 [INFO] [stderr] Compiling synstructure v0.12.4 [INFO] [stderr] Compiling thiserror-impl v1.0.21 [INFO] [stderr] Compiling zeroize_derive v1.0.1 [INFO] [stderr] Compiling pin-project-internal v1.0.1 [INFO] [stderr] Compiling time-macros-impl v0.1.1 [INFO] [stderr] Compiling futures-macro v0.3.7 [INFO] [stderr] Compiling async-stream-impl v0.2.1 [INFO] [stderr] Compiling async-trait v0.1.41 [INFO] [stderr] Checking time-macros v0.1.1 [INFO] [stderr] Checking zeroize v1.1.1 [INFO] [stderr] Checking async-stream v0.2.1 [INFO] [stderr] Checking thiserror v1.0.21 [INFO] [stderr] Checking async-native-tls v0.3.3 [INFO] [stderr] Checking sqlx-rt v0.1.1 [INFO] [stderr] Checking pin-project v1.0.1 [INFO] [stderr] Checking futures-util v0.3.7 [INFO] [stderr] Checking serde v1.0.117 [INFO] [stderr] Checking chrono v0.4.19 [INFO] [stderr] Checking uuid v0.8.1 [INFO] [stderr] Checking rust_decimal v1.8.1 [INFO] [stderr] Checking bigdecimal v0.2.0 [INFO] [stderr] Checking serde_yaml v0.8.14 [INFO] [stderr] Checking simple_asn1 v0.4.1 [INFO] [stderr] Checking fast_log v1.3.2 [INFO] [stderr] Checking rsa v0.3.0 [INFO] [stderr] Checking sqlx-core v0.4.0-beta.1 [INFO] [stderr] Checking rbatis-core v1.8.5 [INFO] [stderr] Checking rbatis v1.7.26 (/opt/rustwide/workdir) [INFO] [stdout] error[E0432]: unresolved import `rbatis_core::connection` [INFO] [stdout] --> src/rbatis.rs:8:18 [INFO] [stdout] | [INFO] [stdout] 8 | use rbatis_core::connection::Connection; [INFO] [stdout] | ^^^^^^^^^^ could not find `connection` in `rbatis_core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `rbatis_core::cursor` [INFO] [stdout] --> src/rbatis.rs:9:18 [INFO] [stdout] | [INFO] [stdout] 9 | use rbatis_core::cursor::Cursor; [INFO] [stdout] | ^^^^^^ could not find `cursor` in `rbatis_core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved imports `rbatis_core::db::DBPool`, `rbatis_core::db::DBPoolConn`, `rbatis_core::db::DBQuery`, `rbatis_core::db::DBTx` [INFO] [stdout] --> src/rbatis.rs:10:23 [INFO] [stdout] | [INFO] [stdout] 10 | use rbatis_core::db::{DBPool, DBPoolConn, DBQuery, DBTx, DriverType, PoolOptions}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^ ^^^^^^^ ^^^^ no `DBTx` in `db` [INFO] [stdout] | | | | [INFO] [stdout] | | | no `DBQuery` in `db` [INFO] [stdout] | | no `DBPoolConn` in `db` [INFO] [stdout] | no `DBPool` in `db` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `rbatis_core::executor` [INFO] [stdout] --> src/rbatis.rs:12:18 [INFO] [stdout] | [INFO] [stdout] 12 | use rbatis_core::executor::Executor; [INFO] [stdout] | ^^^^^^^^ could not find `executor` in `rbatis_core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `rbatis_core::pool` [INFO] [stdout] --> src/rbatis.rs:13:18 [INFO] [stdout] | [INFO] [stdout] 13 | use rbatis_core::pool::{Pool, PoolConnection}; [INFO] [stdout] | ^^^^ could not find `pool` in `rbatis_core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `rbatis_core::query` [INFO] [stdout] --> src/rbatis.rs:14:18 [INFO] [stdout] | [INFO] [stdout] 14 | use rbatis_core::query::{query, Query}; [INFO] [stdout] | ^^^^^ could not find `query` in `rbatis_core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `rbatis_core::query_as` [INFO] [stdout] --> src/rbatis.rs:15:18 [INFO] [stdout] | [INFO] [stdout] 15 | use rbatis_core::query_as::query_as; [INFO] [stdout] | ^^^^^^^^ could not find `query_as` in `rbatis_core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `rbatis_core::transaction` [INFO] [stdout] --> src/rbatis.rs:17:18 [INFO] [stdout] | [INFO] [stdout] 17 | use rbatis_core::transaction::Transaction; [INFO] [stdout] | ^^^^^^^^^^^ could not find `transaction` in `rbatis_core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `fast_log::log` [INFO] [stdout] --> src/crud.rs:429:19 [INFO] [stdout] | [INFO] [stdout] 429 | use fast_log::log::RuntimeType; [INFO] [stdout] | ^^^ could not find `log` in `fast_log` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `rbatis_core::connection` [INFO] [stdout] --> src/rbatis.rs:8:18 [INFO] [stdout] | [INFO] [stdout] 8 | use rbatis_core::connection::Connection; [INFO] [stdout] | ^^^^^^^^^^ could not find `connection` in `rbatis_core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `rbatis_core::cursor` [INFO] [stdout] --> src/rbatis.rs:9:18 [INFO] [stdout] | [INFO] [stdout] 9 | use rbatis_core::cursor::Cursor; [INFO] [stdout] | ^^^^^^ could not find `cursor` in `rbatis_core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved imports `rbatis_core::db::DBPool`, `rbatis_core::db::DBPoolConn`, `rbatis_core::db::DBQuery`, `rbatis_core::db::DBTx` [INFO] [stdout] --> src/rbatis.rs:10:23 [INFO] [stdout] | [INFO] [stdout] 10 | use rbatis_core::db::{DBPool, DBPoolConn, DBQuery, DBTx, DriverType, PoolOptions}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^ ^^^^^^^ ^^^^ no `DBTx` in `db` [INFO] [stdout] | | | | [INFO] [stdout] | | | no `DBQuery` in `db` [INFO] [stdout] | | no `DBPoolConn` in `db` [INFO] [stdout] | no `DBPool` in `db` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `rbatis_core::executor` [INFO] [stdout] --> src/rbatis.rs:12:18 [INFO] [stdout] | [INFO] [stdout] 12 | use rbatis_core::executor::Executor; [INFO] [stdout] | ^^^^^^^^ could not find `executor` in `rbatis_core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `rbatis_core::pool` [INFO] [stdout] --> src/rbatis.rs:13:18 [INFO] [stdout] | [INFO] [stdout] 13 | use rbatis_core::pool::{Pool, PoolConnection}; [INFO] [stdout] | ^^^^ could not find `pool` in `rbatis_core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `rbatis_core::query` [INFO] [stdout] --> src/rbatis.rs:14:18 [INFO] [stdout] | [INFO] [stdout] 14 | use rbatis_core::query::{query, Query}; [INFO] [stdout] | ^^^^^ could not find `query` in `rbatis_core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `rbatis_core::query_as` [INFO] [stdout] --> src/rbatis.rs:15:18 [INFO] [stdout] | [INFO] [stdout] 15 | use rbatis_core::query_as::query_as; [INFO] [stdout] | ^^^^^^^^ could not find `query_as` in `rbatis_core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `rbatis_core::transaction` [INFO] [stdout] --> src/rbatis.rs:17:18 [INFO] [stdout] | [INFO] [stdout] 17 | use rbatis_core::transaction::Transaction; [INFO] [stdout] | ^^^^^^^^^^^ could not find `transaction` in `rbatis_core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: could not find `log` in `fast_log` [INFO] [stdout] --> src/crud.rs:524:23 [INFO] [stdout] | [INFO] [stdout] 524 | fast_log::log::init_log("requests.log", &RuntimeType::Std); [INFO] [stdout] | ^^^ could not find `log` in `fast_log` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: could not find `log` in `fast_log` [INFO] [stdout] --> src/crud.rs:553:23 [INFO] [stdout] | [INFO] [stdout] 553 | fast_log::log::init_log("requests.log", &RuntimeType::Std); [INFO] [stdout] | ^^^ could not find `log` in `fast_log` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: could not find `log` in `fast_log` [INFO] [stdout] --> src/crud.rs:567:23 [INFO] [stdout] | [INFO] [stdout] 567 | fast_log::log::init_log("requests.log", &RuntimeType::Std); [INFO] [stdout] | ^^^ could not find `log` in `fast_log` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: could not find `log` in `fast_log` [INFO] [stdout] --> src/crud.rs:582:23 [INFO] [stdout] | [INFO] [stdout] 582 | fast_log::log::init_log("requests.log", &RuntimeType::Std); [INFO] [stdout] | ^^^ could not find `log` in `fast_log` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: could not find `log` in `fast_log` [INFO] [stdout] --> src/crud.rs:597:23 [INFO] [stdout] | [INFO] [stdout] 597 | fast_log::log::init_log("requests.log", &RuntimeType::Std); [INFO] [stdout] | ^^^ could not find `log` in `fast_log` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: could not find `log` in `fast_log` [INFO] [stdout] --> src/crud.rs:630:23 [INFO] [stdout] | [INFO] [stdout] 630 | fast_log::log::init_log("requests.log", &RuntimeType::Std); [INFO] [stdout] | ^^^ could not find `log` in `fast_log` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: could not find `log` in `fast_log` [INFO] [stdout] --> src/crud.rs:660:23 [INFO] [stdout] | [INFO] [stdout] 660 | fast_log::log::init_log("requests.log", &RuntimeType::Std); [INFO] [stdout] | ^^^ could not find `log` in `fast_log` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: could not find `log` in `fast_log` [INFO] [stdout] --> src/crud.rs:677:23 [INFO] [stdout] | [INFO] [stdout] 677 | fast_log::log::init_log("requests.log", &RuntimeType::Std); [INFO] [stdout] | ^^^ could not find `log` in `fast_log` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: could not find `log` in `fast_log` [INFO] [stdout] --> src/crud.rs:694:23 [INFO] [stdout] | [INFO] [stdout] 694 | fast_log::log::init_log("requests.log", &RuntimeType::Std); [INFO] [stdout] | ^^^ could not find `log` in `fast_log` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0698]: type inside `async fn` body must be known in this context [INFO] [stdout] --> src/rbatis.rs:201:13 [INFO] [stdout] | [INFO] [stdout] 201 | 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:213:31 [INFO] [stdout] | [INFO] [stdout] 213 | let (data, num) = conn.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:269:13 [INFO] [stdout] | [INFO] [stdout] 269 | 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:283:33 [INFO] [stdout] | [INFO] [stdout] 283 | let (result, num) = conn.fetch_parperd(q).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:201:13 [INFO] [stdout] | [INFO] [stdout] 201 | 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:213:31 [INFO] [stdout] | [INFO] [stdout] 213 | let (data, num) = conn.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:269:13 [INFO] [stdout] | [INFO] [stdout] 269 | 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:283:33 [INFO] [stdout] | [INFO] [stdout] 283 | let (result, num) = conn.fetch_parperd(q).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0061]: this function takes 1 argument but 2 arguments were supplied [INFO] [stdout] --> src/ast/lang/py.rs:392:7 [INFO] [stdout] | [INFO] [stdout] 392 | b.iter(&mut sql, |s| { [INFO] [stdout] | _______^^^^_--------__- [INFO] [stdout] | | | [INFO] [stdout] | | expected 1 argument [INFO] [stdout] 393 | | let s = s.ends_with("WHERE") [INFO] [stdout] 394 | | || s.ends_with("AND") [INFO] [stdout] 395 | | || s.ends_with("OR") [INFO] [stdout] ... | [INFO] [stdout] 402 | | || s.ends_with("/"); [INFO] [stdout] 403 | | }); [INFO] [stdout] | |_____- supplied 2 arguments [INFO] [stdout] | [INFO] [stdout] note: associated function defined here [INFO] [stdout] --> src/utils/bencher.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn iter(&mut self, func: F) where F: Fn() { [INFO] [stdout] | ^^^^ --------- ------- [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> src/rbatis.rs:66:19 [INFO] [stdout] | [INFO] [stdout] 66 | 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:228:29 [INFO] [stdout] | [INFO] [stdout] 228 | where T: CRUDEnable { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 229 | | let mut index = 0; [INFO] [stdout] 230 | | let (values, args) = entity.make_value_sql_arg(&self.driver_type()?, &mut index)?; [INFO] [stdout] 231 | | let sql = format!("INSERT INTO {} ({}) VALUES ({})", T::table_name(), T::table_columns(), values); [INFO] [stdout] 232 | | return self.exec_prepare(tx_id, sql.as_str(), &args).await; [INFO] [stdout] 233 | | } [INFO] [stdout] | |_____^ future returned by `__save` 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:232:16 [INFO] [stdout] | [INFO] [stdout] 227 | async fn save(&self, tx_id: &str, entity: &T) -> Result [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 232 | return self.exec_prepare(tx_id, sql.as_str(), &args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 233 | } [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:228:29 [INFO] [stdout] | [INFO] [stdout] 228 | where T: CRUDEnable { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 229 | | let mut index = 0; [INFO] [stdout] 230 | | let (values, args) = entity.make_value_sql_arg(&self.driver_type()?, &mut index)?; [INFO] [stdout] 231 | | let sql = format!("INSERT INTO {} ({}) VALUES ({})", T::table_name(), T::table_columns(), values); [INFO] [stdout] 232 | | return self.exec_prepare(tx_id, sql.as_str(), &args).await; [INFO] [stdout] 233 | | } [INFO] [stdout] | |_____^ future returned by `__save` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:232:16 [INFO] [stdout] | [INFO] [stdout] 227 | async fn save(&self, tx_id: &str, entity: &T) -> Result [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 232 | return self.exec_prepare(tx_id, sql.as_str(), &args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 233 | } [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:228:29 [INFO] [stdout] | [INFO] [stdout] 228 | where T: CRUDEnable { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 229 | | let mut index = 0; [INFO] [stdout] 230 | | let (values, args) = entity.make_value_sql_arg(&self.driver_type()?, &mut index)?; [INFO] [stdout] 231 | | let sql = format!("INSERT INTO {} ({}) VALUES ({})", T::table_name(), T::table_columns(), values); [INFO] [stdout] 232 | | return self.exec_prepare(tx_id, sql.as_str(), &args).await; [INFO] [stdout] 233 | | } [INFO] [stdout] | |_____^ future returned by `__save` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:232:16 [INFO] [stdout] | [INFO] [stdout] 227 | async fn save(&self, tx_id: &str, entity: &T) -> Result [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 232 | return self.exec_prepare(tx_id, sql.as_str(), &args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 233 | } [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:242:95 [INFO] [stdout] | [INFO] [stdout] 242 | async fn save_batch(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________^ [INFO] [stdout] 243 | | if args.is_empty() { [INFO] [stdout] 244 | | return Ok(0); [INFO] [stdout] 245 | | } [INFO] [stdout] ... | [INFO] [stdout] 262 | | return self.exec_prepare(tx_id, sql.as_str(), &arg_arr).await; [INFO] [stdout] 263 | | } [INFO] [stdout] | |_____^ future returned by `__save_batch` 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:262:16 [INFO] [stdout] | [INFO] [stdout] 242 | async fn save_batch(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 262 | return self.exec_prepare(tx_id, sql.as_str(), &arg_arr).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 263 | } [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:242:95 [INFO] [stdout] | [INFO] [stdout] 242 | async fn save_batch(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________^ [INFO] [stdout] 243 | | if args.is_empty() { [INFO] [stdout] 244 | | return Ok(0); [INFO] [stdout] 245 | | } [INFO] [stdout] ... | [INFO] [stdout] 262 | | return self.exec_prepare(tx_id, sql.as_str(), &arg_arr).await; [INFO] [stdout] 263 | | } [INFO] [stdout] | |_____^ future returned by `__save_batch` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:262:16 [INFO] [stdout] | [INFO] [stdout] 242 | async fn save_batch(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 262 | return self.exec_prepare(tx_id, sql.as_str(), &arg_arr).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 263 | } [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:242:95 [INFO] [stdout] | [INFO] [stdout] 242 | async fn save_batch(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________^ [INFO] [stdout] 243 | | if args.is_empty() { [INFO] [stdout] 244 | | return Ok(0); [INFO] [stdout] 245 | | } [INFO] [stdout] ... | [INFO] [stdout] 262 | | return self.exec_prepare(tx_id, sql.as_str(), &arg_arr).await; [INFO] [stdout] 263 | | } [INFO] [stdout] | |_____^ future returned by `__save_batch` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:262:16 [INFO] [stdout] | [INFO] [stdout] 242 | async fn save_batch(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 262 | return self.exec_prepare(tx_id, sql.as_str(), &arg_arr).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 263 | } [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:265:103 [INFO] [stdout] | [INFO] [stdout] 265 | async fn remove_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 266 | | let w = match w.checked { [INFO] [stdout] 267 | | false => w.clone().check()?, [INFO] [stdout] 268 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 277 | | return self.exec_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 278 | | } [INFO] [stdout] | |_____^ future returned by `__remove_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:277:16 [INFO] [stdout] | [INFO] [stdout] 265 | async fn remove_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] 277 | return self.exec_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 278 | } [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:265:103 [INFO] [stdout] | [INFO] [stdout] 265 | async fn remove_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 266 | | let w = match w.checked { [INFO] [stdout] 267 | | false => w.clone().check()?, [INFO] [stdout] 268 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 277 | | return self.exec_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 278 | | } [INFO] [stdout] | |_____^ future returned by `__remove_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:277:16 [INFO] [stdout] | [INFO] [stdout] 265 | async fn remove_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] 277 | return self.exec_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 278 | } [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:265:103 [INFO] [stdout] | [INFO] [stdout] 265 | async fn remove_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 266 | | let w = match w.checked { [INFO] [stdout] 267 | | false => w.clone().check()?, [INFO] [stdout] 268 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 277 | | return self.exec_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 278 | | } [INFO] [stdout] | |_____^ future returned by `__remove_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:277:16 [INFO] [stdout] | [INFO] [stdout] 265 | async fn remove_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] 277 | return self.exec_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 278 | } [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:280:101 [INFO] [stdout] | [INFO] [stdout] 280 | async fn remove_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | _____________________________________________________________________________________________________^ [INFO] [stdout] 281 | | let mut sql = String::new(); [INFO] [stdout] 282 | | if self.logic_plugin.is_some() { [INFO] [stdout] 283 | | sql = self.logic_plugin.as_ref().unwrap().create_remove_sql(&self.driver_type()?, T::table_name().as_str(), &T::table_columns... [INFO] [stdout] ... | [INFO] [stdout] 287 | | return self.exec_prepare(tx_id, sql.as_str(), &vec![]).await; [INFO] [stdout] 288 | | } [INFO] [stdout] | |_____^ future returned by `__remove_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:287:16 [INFO] [stdout] | [INFO] [stdout] 280 | async fn remove_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 287 | return self.exec_prepare(tx_id, sql.as_str(), &vec![]).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 288 | } [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:280:101 [INFO] [stdout] | [INFO] [stdout] 280 | async fn remove_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | _____________________________________________________________________________________________________^ [INFO] [stdout] 281 | | let mut sql = String::new(); [INFO] [stdout] 282 | | if self.logic_plugin.is_some() { [INFO] [stdout] 283 | | sql = self.logic_plugin.as_ref().unwrap().create_remove_sql(&self.driver_type()?, T::table_name().as_str(), &T::table_columns... [INFO] [stdout] ... | [INFO] [stdout] 287 | | return self.exec_prepare(tx_id, sql.as_str(), &vec![]).await; [INFO] [stdout] 288 | | } [INFO] [stdout] | |_____^ future returned by `__remove_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:287:16 [INFO] [stdout] | [INFO] [stdout] 280 | async fn remove_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 287 | return self.exec_prepare(tx_id, sql.as_str(), &vec![]).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 288 | } [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:280:101 [INFO] [stdout] | [INFO] [stdout] 280 | async fn remove_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | _____________________________________________________________________________________________________^ [INFO] [stdout] 281 | | let mut sql = String::new(); [INFO] [stdout] 282 | | if self.logic_plugin.is_some() { [INFO] [stdout] 283 | | sql = self.logic_plugin.as_ref().unwrap().create_remove_sql(&self.driver_type()?, T::table_name().as_str(), &T::table_columns... [INFO] [stdout] ... | [INFO] [stdout] 287 | | return self.exec_prepare(tx_id, sql.as_str(), &vec![]).await; [INFO] [stdout] 288 | | } [INFO] [stdout] | |_____^ future returned by `__remove_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:287:16 [INFO] [stdout] | [INFO] [stdout] 280 | async fn remove_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 287 | return self.exec_prepare(tx_id, sql.as_str(), &vec![]).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 288 | } [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:295:110 [INFO] [stdout] | [INFO] [stdout] 295 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________________________^ [INFO] [stdout] 296 | | if ids.is_empty() { [INFO] [stdout] 297 | | return Ok(0); [INFO] [stdout] 298 | | } [INFO] [stdout] 299 | | let w = Wrapper::new(&self.driver_type()?).and().in_array("id", &ids).check()?; [INFO] [stdout] 300 | | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] 301 | | } [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:300:16 [INFO] [stdout] | [INFO] [stdout] 295 | 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] 300 | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 301 | } [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:295:110 [INFO] [stdout] | [INFO] [stdout] 295 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________________________^ [INFO] [stdout] 296 | | if ids.is_empty() { [INFO] [stdout] 297 | | return Ok(0); [INFO] [stdout] 298 | | } [INFO] [stdout] 299 | | let w = Wrapper::new(&self.driver_type()?).and().in_array("id", &ids).check()?; [INFO] [stdout] 300 | | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] 301 | | } [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 `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:300:16 [INFO] [stdout] | [INFO] [stdout] 295 | 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] 300 | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 301 | } [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:295:110 [INFO] [stdout] | [INFO] [stdout] 295 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________________________^ [INFO] [stdout] 296 | | if ids.is_empty() { [INFO] [stdout] 297 | | return Ok(0); [INFO] [stdout] 298 | | } [INFO] [stdout] 299 | | let w = Wrapper::new(&self.driver_type()?).and().in_array("id", &ids).check()?; [INFO] [stdout] 300 | | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] 301 | | } [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 `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:300:16 [INFO] [stdout] | [INFO] [stdout] 295 | 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] 300 | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 301 | } [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:304:137 [INFO] [stdout] | [INFO] [stdout] 304 | async fn update_by_wrapper(&self, tx_id: &str, arg: &T, w: &Wrapper, update_null_value: bool) -> Result where T: CRUDEnable { [INFO] [stdout] | _________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 305 | | let w = match w.checked { [INFO] [stdout] 306 | | false => w.clone().check()?, [INFO] [stdout] 307 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 339 | | return self.exec_prepare(tx_id, wrapper.sql.as_str(), &wrapper.args).await; [INFO] [stdout] 340 | | } [INFO] [stdout] | |_____^ future returned by `__update_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:339:16 [INFO] [stdout] | [INFO] [stdout] 304 | async fn update_by_wrapper(&self, tx_id: &str, arg: &T, w: &Wrapper, update_null_value: bool) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 339 | return self.exec_prepare(tx_id, wrapper.sql.as_str(), &wrapper.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 340 | } [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:304:137 [INFO] [stdout] | [INFO] [stdout] 304 | async fn update_by_wrapper(&self, tx_id: &str, arg: &T, w: &Wrapper, update_null_value: bool) -> Result where T: CRUDEnable { [INFO] [stdout] | _________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 305 | | let w = match w.checked { [INFO] [stdout] 306 | | false => w.clone().check()?, [INFO] [stdout] 307 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 339 | | return self.exec_prepare(tx_id, wrapper.sql.as_str(), &wrapper.args).await; [INFO] [stdout] 340 | | } [INFO] [stdout] | |_____^ future returned by `__update_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:339:16 [INFO] [stdout] | [INFO] [stdout] 304 | async fn update_by_wrapper(&self, tx_id: &str, arg: &T, w: &Wrapper, update_null_value: bool) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 339 | return self.exec_prepare(tx_id, wrapper.sql.as_str(), &wrapper.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 340 | } [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:304:137 [INFO] [stdout] | [INFO] [stdout] 304 | async fn update_by_wrapper(&self, tx_id: &str, arg: &T, w: &Wrapper, update_null_value: bool) -> Result where T: CRUDEnable { [INFO] [stdout] | _________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 305 | | let w = match w.checked { [INFO] [stdout] 306 | | false => w.clone().check()?, [INFO] [stdout] 307 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 339 | | return self.exec_prepare(tx_id, wrapper.sql.as_str(), &wrapper.args).await; [INFO] [stdout] 340 | | } [INFO] [stdout] | |_____^ future returned by `__update_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:339:16 [INFO] [stdout] | [INFO] [stdout] 304 | async fn update_by_wrapper(&self, tx_id: &str, arg: &T, w: &Wrapper, update_null_value: bool) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 339 | return self.exec_prepare(tx_id, wrapper.sql.as_str(), &wrapper.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 340 | } [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:342:94 [INFO] [stdout] | [INFO] [stdout] 342 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________^ [INFO] [stdout] 343 | | let map = serde_json::to_value(arg).unwrap(); [INFO] [stdout] 344 | | if !map.is_object() { [INFO] [stdout] 345 | | return Err(rbatis_core::Error::from("[rbatis] update_by_id() arg must be an object/struct!")); [INFO] [stdout] ... | [INFO] [stdout] 352 | | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq("id", id), false).await [INFO] [stdout] 353 | | } [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:352:9 [INFO] [stdout] | [INFO] [stdout] 342 | 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] 352 | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq("id", id), false).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 353 | } [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:342:94 [INFO] [stdout] | [INFO] [stdout] 342 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________^ [INFO] [stdout] 343 | | let map = serde_json::to_value(arg).unwrap(); [INFO] [stdout] 344 | | if !map.is_object() { [INFO] [stdout] 345 | | return Err(rbatis_core::Error::from("[rbatis] update_by_id() arg must be an object/struct!")); [INFO] [stdout] ... | [INFO] [stdout] 352 | | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq("id", id), false).await [INFO] [stdout] 353 | | } [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 `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:352:9 [INFO] [stdout] | [INFO] [stdout] 342 | 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] 352 | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq("id", id), false).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 353 | } [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:342:94 [INFO] [stdout] | [INFO] [stdout] 342 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________^ [INFO] [stdout] 343 | | let map = serde_json::to_value(arg).unwrap(); [INFO] [stdout] 344 | | if !map.is_object() { [INFO] [stdout] 345 | | return Err(rbatis_core::Error::from("[rbatis] update_by_id() arg must be an object/struct!")); [INFO] [stdout] ... | [INFO] [stdout] 352 | | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq("id", id), false).await [INFO] [stdout] 353 | | } [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 `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:352:9 [INFO] [stdout] | [INFO] [stdout] 342 | 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] 352 | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq("id", id), false).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 353 | } [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:355:103 [INFO] [stdout] | [INFO] [stdout] 355 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 356 | | let mut updates = 0; [INFO] [stdout] 357 | | for x in args { [INFO] [stdout] 358 | | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] 359 | | } [INFO] [stdout] 360 | | Ok(updates) [INFO] [stdout] 361 | | } [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:358:24 [INFO] [stdout] | [INFO] [stdout] 355 | 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] 358 | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] ... [INFO] [stdout] 361 | } [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:355:103 [INFO] [stdout] | [INFO] [stdout] 355 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 356 | | let mut updates = 0; [INFO] [stdout] 357 | | for x in args { [INFO] [stdout] 358 | | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] 359 | | } [INFO] [stdout] 360 | | Ok(updates) [INFO] [stdout] 361 | | } [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 `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:358:24 [INFO] [stdout] | [INFO] [stdout] 355 | 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] 358 | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] ... [INFO] [stdout] 361 | } [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:355:103 [INFO] [stdout] | [INFO] [stdout] 355 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 356 | | let mut updates = 0; [INFO] [stdout] 357 | | for x in args { [INFO] [stdout] 358 | | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] 359 | | } [INFO] [stdout] 360 | | Ok(updates) [INFO] [stdout] 361 | | } [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 `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:358:24 [INFO] [stdout] | [INFO] [stdout] 355 | 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] 358 | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] ... [INFO] [stdout] 361 | } [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:363:100 [INFO] [stdout] | [INFO] [stdout] 363 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ____________________________________________________________________________________________________^ [INFO] [stdout] 364 | | let w = match w.checked { [INFO] [stdout] 365 | | false => w.clone().check()?, [INFO] [stdout] 366 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 369 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 370 | | } [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:369:16 [INFO] [stdout] | [INFO] [stdout] 363 | 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] 369 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 370 | } [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:363:100 [INFO] [stdout] | [INFO] [stdout] 363 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ____________________________________________________________________________________________________^ [INFO] [stdout] 364 | | let w = match w.checked { [INFO] [stdout] 365 | | false => w.clone().check()?, [INFO] [stdout] 366 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 369 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 370 | | } [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 `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:369:16 [INFO] [stdout] | [INFO] [stdout] 363 | 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] 369 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 370 | } [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:363:100 [INFO] [stdout] | [INFO] [stdout] 363 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ____________________________________________________________________________________________________^ [INFO] [stdout] 364 | | let w = match w.checked { [INFO] [stdout] 365 | | false => w.clone().check()?, [INFO] [stdout] 366 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 369 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 370 | | } [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 `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:369:16 [INFO] [stdout] | [INFO] [stdout] 363 | 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] 369 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 370 | } [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:372:98 [INFO] [stdout] | [INFO] [stdout] 372 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________^ [INFO] [stdout] 373 | | let w = Wrapper::new(&self.driver_type()?).eq("id", id).check()?; [INFO] [stdout] 374 | | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] 375 | | } [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:374:16 [INFO] [stdout] | [INFO] [stdout] 372 | 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] 373 | let w = Wrapper::new(&self.driver_type()?).eq("id", id).check()?; [INFO] [stdout] 374 | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 375 | } [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:372:98 [INFO] [stdout] | [INFO] [stdout] 372 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________^ [INFO] [stdout] 373 | | let w = Wrapper::new(&self.driver_type()?).eq("id", id).check()?; [INFO] [stdout] 374 | | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] 375 | | } [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 `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:374:16 [INFO] [stdout] | [INFO] [stdout] 372 | 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] 373 | let w = Wrapper::new(&self.driver_type()?).eq("id", id).check()?; [INFO] [stdout] 374 | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 375 | } [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:372:98 [INFO] [stdout] | [INFO] [stdout] 372 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________^ [INFO] [stdout] 373 | | let w = Wrapper::new(&self.driver_type()?).eq("id", id).check()?; [INFO] [stdout] 374 | | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] 375 | | } [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 `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:374:16 [INFO] [stdout] | [INFO] [stdout] 372 | 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] 373 | let w = Wrapper::new(&self.driver_type()?).eq("id", id).check()?; [INFO] [stdout] 374 | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 375 | } [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:377:104 [INFO] [stdout] | [INFO] [stdout] 377 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________^ [INFO] [stdout] 378 | | let w = match w.checked { [INFO] [stdout] 379 | | false => w.clone().check()?, [INFO] [stdout] 380 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 383 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 384 | | } [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:383:16 [INFO] [stdout] | [INFO] [stdout] 377 | 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] 383 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 384 | } [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:377:104 [INFO] [stdout] | [INFO] [stdout] 377 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________^ [INFO] [stdout] 378 | | let w = match w.checked { [INFO] [stdout] 379 | | false => w.clone().check()?, [INFO] [stdout] 380 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 383 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 384 | | } [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 `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:383:16 [INFO] [stdout] | [INFO] [stdout] 377 | 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] 383 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 384 | } [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:377:104 [INFO] [stdout] | [INFO] [stdout] 377 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________^ [INFO] [stdout] 378 | | let w = match w.checked { [INFO] [stdout] 379 | | false => w.clone().check()?, [INFO] [stdout] 380 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 383 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 384 | | } [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 `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:383:16 [INFO] [stdout] | [INFO] [stdout] 377 | 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] 383 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 384 | } [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:386:80 [INFO] [stdout] | [INFO] [stdout] 386 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 387 | | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] 388 | | } [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:387:16 [INFO] [stdout] | [INFO] [stdout] 386 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 387 | 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] 388 | } [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:386:80 [INFO] [stdout] | [INFO] [stdout] 386 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 387 | | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] 388 | | } [INFO] [stdout] | |_____^ future returned by `__list` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:387:16 [INFO] [stdout] | [INFO] [stdout] 386 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 387 | 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] 388 | } [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:386:80 [INFO] [stdout] | [INFO] [stdout] 386 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 387 | | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] 388 | | } [INFO] [stdout] | |_____^ future returned by `__list` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:387:16 [INFO] [stdout] | [INFO] [stdout] 386 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 387 | 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] 388 | } [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:390:106 [INFO] [stdout] | [INFO] [stdout] 390 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________________^ [INFO] [stdout] 391 | | let w = Wrapper::new(&self.driver_type()?).in_array("id", ids).check()?; [INFO] [stdout] 392 | | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] 393 | | } [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:392:16 [INFO] [stdout] | [INFO] [stdout] 390 | 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] 391 | let w = Wrapper::new(&self.driver_type()?).in_array("id", ids).check()?; [INFO] [stdout] 392 | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 393 | } [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[E0282]: type annotations needed [INFO] [stdout] --> src/rbatis.rs:66:19 [INFO] [stdout] | [INFO] [stdout] 66 | 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:390:106 [INFO] [stdout] | [INFO] [stdout] 390 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________________^ [INFO] [stdout] 391 | | let w = Wrapper::new(&self.driver_type()?).in_array("id", ids).check()?; [INFO] [stdout] 392 | | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] 393 | | } [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 `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:392:16 [INFO] [stdout] | [INFO] [stdout] 390 | 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] 391 | let w = Wrapper::new(&self.driver_type()?).in_array("id", ids).check()?; [INFO] [stdout] 392 | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 393 | } [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:390:106 [INFO] [stdout] | [INFO] [stdout] 390 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________________^ [INFO] [stdout] 391 | | let w = Wrapper::new(&self.driver_type()?).in_array("id", ids).check()?; [INFO] [stdout] 392 | | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] 393 | | } [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 `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:392:16 [INFO] [stdout] | [INFO] [stdout] 390 | 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] 391 | let w = Wrapper::new(&self.driver_type()?).in_array("id", ids).check()?; [INFO] [stdout] 392 | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 393 | } [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:395:136 [INFO] [stdout] | [INFO] [stdout] 395 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 396 | | let w = match w.checked { [INFO] [stdout] 397 | | false => w.clone().check()?, [INFO] [stdout] 398 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 401 | | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] 402 | | } [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:401:9 [INFO] [stdout] | [INFO] [stdout] 395 | 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] 401 | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 402 | } [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:395:136 [INFO] [stdout] | [INFO] [stdout] 395 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 396 | | let w = match w.checked { [INFO] [stdout] 397 | | false => w.clone().check()?, [INFO] [stdout] 398 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 401 | | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] 402 | | } [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 `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:401:9 [INFO] [stdout] | [INFO] [stdout] 395 | 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] 401 | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 402 | } [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:395:136 [INFO] [stdout] | [INFO] [stdout] 395 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 396 | | let w = match w.checked { [INFO] [stdout] 397 | | false => w.clone().check()?, [INFO] [stdout] 398 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 401 | | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] 402 | | } [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 `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:401:9 [INFO] [stdout] | [INFO] [stdout] 395 | 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] 401 | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 402 | } [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:228:29 [INFO] [stdout] | [INFO] [stdout] 228 | where T: CRUDEnable { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 229 | | let mut index = 0; [INFO] [stdout] 230 | | let (values, args) = entity.make_value_sql_arg(&self.driver_type()?, &mut index)?; [INFO] [stdout] 231 | | let sql = format!("INSERT INTO {} ({}) VALUES ({})", T::table_name(), T::table_columns(), values); [INFO] [stdout] 232 | | return self.exec_prepare(tx_id, sql.as_str(), &args).await; [INFO] [stdout] 233 | | } [INFO] [stdout] | |_____^ future returned by `__save` 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:232:16 [INFO] [stdout] | [INFO] [stdout] 227 | async fn save(&self, tx_id: &str, entity: &T) -> Result [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 232 | return self.exec_prepare(tx_id, sql.as_str(), &args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 233 | } [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:228:29 [INFO] [stdout] | [INFO] [stdout] 228 | where T: CRUDEnable { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 229 | | let mut index = 0; [INFO] [stdout] 230 | | let (values, args) = entity.make_value_sql_arg(&self.driver_type()?, &mut index)?; [INFO] [stdout] 231 | | let sql = format!("INSERT INTO {} ({}) VALUES ({})", T::table_name(), T::table_columns(), values); [INFO] [stdout] 232 | | return self.exec_prepare(tx_id, sql.as_str(), &args).await; [INFO] [stdout] 233 | | } [INFO] [stdout] | |_____^ future returned by `__save` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:232:16 [INFO] [stdout] | [INFO] [stdout] 227 | async fn save(&self, tx_id: &str, entity: &T) -> Result [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 232 | return self.exec_prepare(tx_id, sql.as_str(), &args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 233 | } [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:228:29 [INFO] [stdout] | [INFO] [stdout] 228 | where T: CRUDEnable { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 229 | | let mut index = 0; [INFO] [stdout] 230 | | let (values, args) = entity.make_value_sql_arg(&self.driver_type()?, &mut index)?; [INFO] [stdout] 231 | | let sql = format!("INSERT INTO {} ({}) VALUES ({})", T::table_name(), T::table_columns(), values); [INFO] [stdout] 232 | | return self.exec_prepare(tx_id, sql.as_str(), &args).await; [INFO] [stdout] 233 | | } [INFO] [stdout] | |_____^ future returned by `__save` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:232:16 [INFO] [stdout] | [INFO] [stdout] 227 | async fn save(&self, tx_id: &str, entity: &T) -> Result [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 232 | return self.exec_prepare(tx_id, sql.as_str(), &args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 233 | } [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:242:95 [INFO] [stdout] | [INFO] [stdout] 242 | async fn save_batch(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________^ [INFO] [stdout] 243 | | if args.is_empty() { [INFO] [stdout] 244 | | return Ok(0); [INFO] [stdout] 245 | | } [INFO] [stdout] ... | [INFO] [stdout] 262 | | return self.exec_prepare(tx_id, sql.as_str(), &arg_arr).await; [INFO] [stdout] 263 | | } [INFO] [stdout] | |_____^ future returned by `__save_batch` 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:262:16 [INFO] [stdout] | [INFO] [stdout] 242 | async fn save_batch(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 262 | return self.exec_prepare(tx_id, sql.as_str(), &arg_arr).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 263 | } [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:242:95 [INFO] [stdout] | [INFO] [stdout] 242 | async fn save_batch(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________^ [INFO] [stdout] 243 | | if args.is_empty() { [INFO] [stdout] 244 | | return Ok(0); [INFO] [stdout] 245 | | } [INFO] [stdout] ... | [INFO] [stdout] 262 | | return self.exec_prepare(tx_id, sql.as_str(), &arg_arr).await; [INFO] [stdout] 263 | | } [INFO] [stdout] | |_____^ future returned by `__save_batch` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:262:16 [INFO] [stdout] | [INFO] [stdout] 242 | async fn save_batch(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 262 | return self.exec_prepare(tx_id, sql.as_str(), &arg_arr).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 263 | } [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:242:95 [INFO] [stdout] | [INFO] [stdout] 242 | async fn save_batch(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________^ [INFO] [stdout] 243 | | if args.is_empty() { [INFO] [stdout] 244 | | return Ok(0); [INFO] [stdout] 245 | | } [INFO] [stdout] ... | [INFO] [stdout] 262 | | return self.exec_prepare(tx_id, sql.as_str(), &arg_arr).await; [INFO] [stdout] 263 | | } [INFO] [stdout] | |_____^ future returned by `__save_batch` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:262:16 [INFO] [stdout] | [INFO] [stdout] 242 | async fn save_batch(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 262 | return self.exec_prepare(tx_id, sql.as_str(), &arg_arr).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 263 | } [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:265:103 [INFO] [stdout] | [INFO] [stdout] 265 | async fn remove_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 266 | | let w = match w.checked { [INFO] [stdout] 267 | | false => w.clone().check()?, [INFO] [stdout] 268 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 277 | | return self.exec_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 278 | | } [INFO] [stdout] | |_____^ future returned by `__remove_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:277:16 [INFO] [stdout] | [INFO] [stdout] 265 | async fn remove_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] 277 | return self.exec_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 278 | } [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:265:103 [INFO] [stdout] | [INFO] [stdout] 265 | async fn remove_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 266 | | let w = match w.checked { [INFO] [stdout] 267 | | false => w.clone().check()?, [INFO] [stdout] 268 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 277 | | return self.exec_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 278 | | } [INFO] [stdout] | |_____^ future returned by `__remove_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:277:16 [INFO] [stdout] | [INFO] [stdout] 265 | async fn remove_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] 277 | return self.exec_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 278 | } [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:265:103 [INFO] [stdout] | [INFO] [stdout] 265 | async fn remove_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 266 | | let w = match w.checked { [INFO] [stdout] 267 | | false => w.clone().check()?, [INFO] [stdout] 268 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 277 | | return self.exec_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 278 | | } [INFO] [stdout] | |_____^ future returned by `__remove_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:277:16 [INFO] [stdout] | [INFO] [stdout] 265 | async fn remove_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] 277 | return self.exec_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 278 | } [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:280:101 [INFO] [stdout] | [INFO] [stdout] 280 | async fn remove_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | _____________________________________________________________________________________________________^ [INFO] [stdout] 281 | | let mut sql = String::new(); [INFO] [stdout] 282 | | if self.logic_plugin.is_some() { [INFO] [stdout] 283 | | sql = self.logic_plugin.as_ref().unwrap().create_remove_sql(&self.driver_type()?, T::table_name().as_str(), &T::table_columns... [INFO] [stdout] ... | [INFO] [stdout] 287 | | return self.exec_prepare(tx_id, sql.as_str(), &vec![]).await; [INFO] [stdout] 288 | | } [INFO] [stdout] | |_____^ future returned by `__remove_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:287:16 [INFO] [stdout] | [INFO] [stdout] 280 | async fn remove_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 287 | return self.exec_prepare(tx_id, sql.as_str(), &vec![]).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 288 | } [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:280:101 [INFO] [stdout] | [INFO] [stdout] 280 | async fn remove_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | _____________________________________________________________________________________________________^ [INFO] [stdout] 281 | | let mut sql = String::new(); [INFO] [stdout] 282 | | if self.logic_plugin.is_some() { [INFO] [stdout] 283 | | sql = self.logic_plugin.as_ref().unwrap().create_remove_sql(&self.driver_type()?, T::table_name().as_str(), &T::table_columns... [INFO] [stdout] ... | [INFO] [stdout] 287 | | return self.exec_prepare(tx_id, sql.as_str(), &vec![]).await; [INFO] [stdout] 288 | | } [INFO] [stdout] | |_____^ future returned by `__remove_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:287:16 [INFO] [stdout] | [INFO] [stdout] 280 | async fn remove_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 287 | return self.exec_prepare(tx_id, sql.as_str(), &vec![]).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 288 | } [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:280:101 [INFO] [stdout] | [INFO] [stdout] 280 | async fn remove_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | _____________________________________________________________________________________________________^ [INFO] [stdout] 281 | | let mut sql = String::new(); [INFO] [stdout] 282 | | if self.logic_plugin.is_some() { [INFO] [stdout] 283 | | sql = self.logic_plugin.as_ref().unwrap().create_remove_sql(&self.driver_type()?, T::table_name().as_str(), &T::table_columns... [INFO] [stdout] ... | [INFO] [stdout] 287 | | return self.exec_prepare(tx_id, sql.as_str(), &vec![]).await; [INFO] [stdout] 288 | | } [INFO] [stdout] | |_____^ future returned by `__remove_by_id` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:287:16 [INFO] [stdout] | [INFO] [stdout] 280 | async fn remove_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 287 | return self.exec_prepare(tx_id, sql.as_str(), &vec![]).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 288 | } [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:295:110 [INFO] [stdout] | [INFO] [stdout] 295 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________________________^ [INFO] [stdout] 296 | | if ids.is_empty() { [INFO] [stdout] 297 | | return Ok(0); [INFO] [stdout] 298 | | } [INFO] [stdout] 299 | | let w = Wrapper::new(&self.driver_type()?).and().in_array("id", &ids).check()?; [INFO] [stdout] 300 | | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] 301 | | } [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:300:16 [INFO] [stdout] | [INFO] [stdout] 295 | 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] 300 | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 301 | } [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:295:110 [INFO] [stdout] | [INFO] [stdout] 295 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________________________^ [INFO] [stdout] 296 | | if ids.is_empty() { [INFO] [stdout] 297 | | return Ok(0); [INFO] [stdout] 298 | | } [INFO] [stdout] 299 | | let w = Wrapper::new(&self.driver_type()?).and().in_array("id", &ids).check()?; [INFO] [stdout] 300 | | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] 301 | | } [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 `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:300:16 [INFO] [stdout] | [INFO] [stdout] 295 | 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] 300 | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 301 | } [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: aborting due to 53 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:295:110 [INFO] [stdout] | [INFO] [stdout] 295 | async fn remove_batch_by_id(&self, tx_id: &str, ids: &[T::IdType]) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________________________^ [INFO] [stdout] 296 | | if ids.is_empty() { [INFO] [stdout] 297 | | return Ok(0); [INFO] [stdout] 298 | | } [INFO] [stdout] 299 | | let w = Wrapper::new(&self.driver_type()?).and().in_array("id", &ids).check()?; [INFO] [stdout] 300 | | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] 301 | | } [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 `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:300:16 [INFO] [stdout] | [INFO] [stdout] 295 | 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] 300 | return self.remove_by_wrapper::(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 301 | } [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] Some errors have detailed explanations: E0282, E0432, E0698. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0282`. [INFO] [stdout] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:304:137 [INFO] [stdout] | [INFO] [stdout] 304 | async fn update_by_wrapper(&self, tx_id: &str, arg: &T, w: &Wrapper, update_null_value: bool) -> Result where T: CRUDEnable { [INFO] [stdout] | _________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 305 | | let w = match w.checked { [INFO] [stdout] 306 | | false => w.clone().check()?, [INFO] [stdout] 307 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 339 | | return self.exec_prepare(tx_id, wrapper.sql.as_str(), &wrapper.args).await; [INFO] [stdout] 340 | | } [INFO] [stdout] | |_____^ future returned by `__update_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:339:16 [INFO] [stdout] | [INFO] [stdout] 304 | async fn update_by_wrapper(&self, tx_id: &str, arg: &T, w: &Wrapper, update_null_value: bool) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 339 | return self.exec_prepare(tx_id, wrapper.sql.as_str(), &wrapper.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 340 | } [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:304:137 [INFO] [stdout] | [INFO] [stdout] 304 | async fn update_by_wrapper(&self, tx_id: &str, arg: &T, w: &Wrapper, update_null_value: bool) -> Result where T: CRUDEnable { [INFO] [stdout] | _________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 305 | | let w = match w.checked { [INFO] [stdout] 306 | | false => w.clone().check()?, [INFO] [stdout] 307 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 339 | | return self.exec_prepare(tx_id, wrapper.sql.as_str(), &wrapper.args).await; [INFO] [stdout] 340 | | } [INFO] [stdout] | |_____^ future returned by `__update_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:339:16 [INFO] [stdout] | [INFO] [stdout] 304 | async fn update_by_wrapper(&self, tx_id: &str, arg: &T, w: &Wrapper, update_null_value: bool) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 339 | return self.exec_prepare(tx_id, wrapper.sql.as_str(), &wrapper.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 340 | } [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:304:137 [INFO] [stdout] | [INFO] [stdout] 304 | async fn update_by_wrapper(&self, tx_id: &str, arg: &T, w: &Wrapper, update_null_value: bool) -> Result where T: CRUDEnable { [INFO] [stdout] | _________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 305 | | let w = match w.checked { [INFO] [stdout] 306 | | false => w.clone().check()?, [INFO] [stdout] 307 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 339 | | return self.exec_prepare(tx_id, wrapper.sql.as_str(), &wrapper.args).await; [INFO] [stdout] 340 | | } [INFO] [stdout] | |_____^ future returned by `__update_by_wrapper` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:339:16 [INFO] [stdout] | [INFO] [stdout] 304 | async fn update_by_wrapper(&self, tx_id: &str, arg: &T, w: &Wrapper, update_null_value: bool) -> Result where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] ... [INFO] [stdout] 339 | return self.exec_prepare(tx_id, wrapper.sql.as_str(), &wrapper.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 340 | } [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] [stderr] error: could not compile `rbatis` [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:342:94 [INFO] [stdout] | [INFO] [stdout] 342 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________^ [INFO] [stdout] 343 | | let map = serde_json::to_value(arg).unwrap(); [INFO] [stdout] 344 | | if !map.is_object() { [INFO] [stdout] 345 | | return Err(rbatis_core::Error::from("[rbatis] update_by_id() arg must be an object/struct!")); [INFO] [stdout] ... | [INFO] [stdout] 352 | | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq("id", id), false).await [INFO] [stdout] 353 | | } [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:352:9 [INFO] [stdout] | [INFO] [stdout] 342 | 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] 352 | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq("id", id), false).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 353 | } [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] [stderr] [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:342:94 [INFO] [stdout] | [INFO] [stdout] 342 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________^ [INFO] [stdout] 343 | | let map = serde_json::to_value(arg).unwrap(); [INFO] [stdout] 344 | | if !map.is_object() { [INFO] [stdout] 345 | | return Err(rbatis_core::Error::from("[rbatis] update_by_id() arg must be an object/struct!")); [INFO] [stdout] ... | [INFO] [stdout] 352 | | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq("id", id), false).await [INFO] [stdout] 353 | | } [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 `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:352:9 [INFO] [stdout] | [INFO] [stdout] 342 | 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] 352 | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq("id", id), false).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 353 | } [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] [stderr] To learn more, run the command again with --verbose. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] error: future cannot be sent between threads safely [INFO] [stdout] --> src/crud.rs:342:94 [INFO] [stdout] | [INFO] [stdout] 342 | async fn update_by_id(&self, tx_id: &str, arg: &T) -> Result where T: CRUDEnable { [INFO] [stdout] | ______________________________________________________________________________________________^ [INFO] [stdout] 343 | | let map = serde_json::to_value(arg).unwrap(); [INFO] [stdout] 344 | | if !map.is_object() { [INFO] [stdout] 345 | | return Err(rbatis_core::Error::from("[rbatis] update_by_id() arg must be an object/struct!")); [INFO] [stdout] ... | [INFO] [stdout] 352 | | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq("id", id), false).await [INFO] [stdout] 353 | | } [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 `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:352:9 [INFO] [stdout] | [INFO] [stdout] 342 | 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] 352 | self.update_by_wrapper(tx_id, arg, Wrapper::new(&self.driver_type()?).eq("id", id), false).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 353 | } [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:355:103 [INFO] [stdout] | [INFO] [stdout] 355 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 356 | | let mut updates = 0; [INFO] [stdout] 357 | | for x in args { [INFO] [stdout] 358 | | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] 359 | | } [INFO] [stdout] 360 | | Ok(updates) [INFO] [stdout] 361 | | } [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:358:24 [INFO] [stdout] | [INFO] [stdout] 355 | 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] 358 | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] ... [INFO] [stdout] 361 | } [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:355:103 [INFO] [stdout] | [INFO] [stdout] 355 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 356 | | let mut updates = 0; [INFO] [stdout] 357 | | for x in args { [INFO] [stdout] 358 | | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] 359 | | } [INFO] [stdout] 360 | | Ok(updates) [INFO] [stdout] 361 | | } [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 `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:358:24 [INFO] [stdout] | [INFO] [stdout] 355 | 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] 358 | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] ... [INFO] [stdout] 361 | } [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:355:103 [INFO] [stdout] | [INFO] [stdout] 355 | async fn update_batch_by_id(&self, tx_id: &str, args: &[T]) -> Result where T: CRUDEnable { [INFO] [stdout] | _______________________________________________________________________________________________________^ [INFO] [stdout] 356 | | let mut updates = 0; [INFO] [stdout] 357 | | for x in args { [INFO] [stdout] 358 | | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] 359 | | } [INFO] [stdout] 360 | | Ok(updates) [INFO] [stdout] 361 | | } [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 `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:358:24 [INFO] [stdout] | [INFO] [stdout] 355 | 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] 358 | updates += self.update_by_id(tx_id, x).await? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] ... [INFO] [stdout] 361 | } [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:363:100 [INFO] [stdout] | [INFO] [stdout] 363 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ____________________________________________________________________________________________________^ [INFO] [stdout] 364 | | let w = match w.checked { [INFO] [stdout] 365 | | false => w.clone().check()?, [INFO] [stdout] 366 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 369 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 370 | | } [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:369:16 [INFO] [stdout] | [INFO] [stdout] 363 | 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] 369 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 370 | } [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:363:100 [INFO] [stdout] | [INFO] [stdout] 363 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ____________________________________________________________________________________________________^ [INFO] [stdout] 364 | | let w = match w.checked { [INFO] [stdout] 365 | | false => w.clone().check()?, [INFO] [stdout] 366 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 369 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 370 | | } [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 `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:369:16 [INFO] [stdout] | [INFO] [stdout] 363 | 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] 369 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 370 | } [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:363:100 [INFO] [stdout] | [INFO] [stdout] 363 | async fn fetch_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result where T: CRUDEnable { [INFO] [stdout] | ____________________________________________________________________________________________________^ [INFO] [stdout] 364 | | let w = match w.checked { [INFO] [stdout] 365 | | false => w.clone().check()?, [INFO] [stdout] 366 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 369 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 370 | | } [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 `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:369:16 [INFO] [stdout] | [INFO] [stdout] 363 | 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] 369 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 370 | } [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:372:98 [INFO] [stdout] | [INFO] [stdout] 372 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________^ [INFO] [stdout] 373 | | let w = Wrapper::new(&self.driver_type()?).eq("id", id).check()?; [INFO] [stdout] 374 | | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] 375 | | } [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:374:16 [INFO] [stdout] | [INFO] [stdout] 372 | 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] 373 | let w = Wrapper::new(&self.driver_type()?).eq("id", id).check()?; [INFO] [stdout] 374 | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 375 | } [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:372:98 [INFO] [stdout] | [INFO] [stdout] 372 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________^ [INFO] [stdout] 373 | | let w = Wrapper::new(&self.driver_type()?).eq("id", id).check()?; [INFO] [stdout] 374 | | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] 375 | | } [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 `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:374:16 [INFO] [stdout] | [INFO] [stdout] 372 | 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] 373 | let w = Wrapper::new(&self.driver_type()?).eq("id", id).check()?; [INFO] [stdout] 374 | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 375 | } [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:372:98 [INFO] [stdout] | [INFO] [stdout] 372 | async fn fetch_by_id(&self, tx_id: &str, id: &T::IdType) -> Result where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________^ [INFO] [stdout] 373 | | let w = Wrapper::new(&self.driver_type()?).eq("id", id).check()?; [INFO] [stdout] 374 | | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] 375 | | } [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 `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:374:16 [INFO] [stdout] | [INFO] [stdout] 372 | 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] 373 | let w = Wrapper::new(&self.driver_type()?).eq("id", id).check()?; [INFO] [stdout] 374 | return self.fetch_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 375 | } [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:377:104 [INFO] [stdout] | [INFO] [stdout] 377 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________^ [INFO] [stdout] 378 | | let w = match w.checked { [INFO] [stdout] 379 | | false => w.clone().check()?, [INFO] [stdout] 380 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 383 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 384 | | } [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:383:16 [INFO] [stdout] | [INFO] [stdout] 377 | 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] 383 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 384 | } [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:377:104 [INFO] [stdout] | [INFO] [stdout] 377 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________^ [INFO] [stdout] 378 | | let w = match w.checked { [INFO] [stdout] 379 | | false => w.clone().check()?, [INFO] [stdout] 380 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 383 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 384 | | } [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 `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:383:16 [INFO] [stdout] | [INFO] [stdout] 377 | 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] 383 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 384 | } [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:377:104 [INFO] [stdout] | [INFO] [stdout] 377 | async fn list_by_wrapper(&self, tx_id: &str, w: &Wrapper) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________^ [INFO] [stdout] 378 | | let w = match w.checked { [INFO] [stdout] 379 | | false => w.clone().check()?, [INFO] [stdout] 380 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 383 | | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] 384 | | } [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 `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:383:16 [INFO] [stdout] | [INFO] [stdout] 377 | 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] 383 | return self.fetch_prepare(tx_id, sql.as_str(), &w.args).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 384 | } [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:386:80 [INFO] [stdout] | [INFO] [stdout] 386 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 387 | | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] 388 | | } [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:387:16 [INFO] [stdout] | [INFO] [stdout] 386 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 387 | 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] 388 | } [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:386:80 [INFO] [stdout] | [INFO] [stdout] 386 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 387 | | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] 388 | | } [INFO] [stdout] | |_____^ future returned by `__list` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:387:16 [INFO] [stdout] | [INFO] [stdout] 386 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 387 | 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] 388 | } [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:386:80 [INFO] [stdout] | [INFO] [stdout] 386 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 387 | | return self.list_by_wrapper(tx_id, &Wrapper::new(&self.driver_type()?)).await; [INFO] [stdout] 388 | | } [INFO] [stdout] | |_____^ future returned by `__list` is not `Send` [INFO] [stdout] | [INFO] [stdout] = help: within `Rbatis`, 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:387:16 [INFO] [stdout] | [INFO] [stdout] 386 | async fn list(&self, tx_id: &str) -> Result> where T: CRUDEnable { [INFO] [stdout] | ---- has type `&Rbatis` which is not `Send` [INFO] [stdout] 387 | 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] 388 | } [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:390:106 [INFO] [stdout] | [INFO] [stdout] 390 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________________^ [INFO] [stdout] 391 | | let w = Wrapper::new(&self.driver_type()?).in_array("id", ids).check()?; [INFO] [stdout] 392 | | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] 393 | | } [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:392:16 [INFO] [stdout] | [INFO] [stdout] 390 | 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] 391 | let w = Wrapper::new(&self.driver_type()?).in_array("id", ids).check()?; [INFO] [stdout] 392 | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 393 | } [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:390:106 [INFO] [stdout] | [INFO] [stdout] 390 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________________^ [INFO] [stdout] 391 | | let w = Wrapper::new(&self.driver_type()?).in_array("id", ids).check()?; [INFO] [stdout] 392 | | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] 393 | | } [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 `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:392:16 [INFO] [stdout] | [INFO] [stdout] 390 | 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] 391 | let w = Wrapper::new(&self.driver_type()?).in_array("id", ids).check()?; [INFO] [stdout] 392 | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 393 | } [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:390:106 [INFO] [stdout] | [INFO] [stdout] 390 | async fn list_by_ids(&self, tx_id: &str, ids: &[T::IdType]) -> Result> where T: CRUDEnable { [INFO] [stdout] | __________________________________________________________________________________________________________^ [INFO] [stdout] 391 | | let w = Wrapper::new(&self.driver_type()?).in_array("id", ids).check()?; [INFO] [stdout] 392 | | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] 393 | | } [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 `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:392:16 [INFO] [stdout] | [INFO] [stdout] 390 | 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] 391 | let w = Wrapper::new(&self.driver_type()?).in_array("id", ids).check()?; [INFO] [stdout] 392 | return self.list_by_wrapper(tx_id, &w).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 393 | } [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:395:136 [INFO] [stdout] | [INFO] [stdout] 395 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 396 | | let w = match w.checked { [INFO] [stdout] 397 | | false => w.clone().check()?, [INFO] [stdout] 398 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 401 | | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] 402 | | } [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:401:9 [INFO] [stdout] | [INFO] [stdout] 395 | 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] 401 | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 402 | } [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:395:136 [INFO] [stdout] | [INFO] [stdout] 395 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 396 | | let w = match w.checked { [INFO] [stdout] 397 | | false => w.clone().check()?, [INFO] [stdout] 398 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 401 | | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] 402 | | } [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 `UnsafeCell` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:401:9 [INFO] [stdout] | [INFO] [stdout] 395 | 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] 401 | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 402 | } [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:395:136 [INFO] [stdout] | [INFO] [stdout] 395 | async fn fetch_page_by_wrapper(&self, tx_id: &str, w: &Wrapper, page: &dyn IPageRequest) -> Result> where T: CRUDEnable { [INFO] [stdout] | ________________________________________________________________________________________________________________________________________^ [INFO] [stdout] 396 | | let w = match w.checked { [INFO] [stdout] 397 | | false => w.clone().check()?, [INFO] [stdout] 398 | | _ => w.clone() [INFO] [stdout] ... | [INFO] [stdout] 401 | | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] 402 | | } [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 `NonNull` [INFO] [stdout] note: future is not `Send` as this value is used across an await [INFO] [stdout] --> src/crud.rs:401:9 [INFO] [stdout] | [INFO] [stdout] 395 | 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] 401 | self.fetch_page(tx_id, sql.as_str(), &w.args, page).await [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `self` maybe used later [INFO] [stdout] 402 | } [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[E0061]: this function takes 1 argument but 2 arguments were supplied [INFO] [stdout] --> src/wrapper.rs:598:11 [INFO] [stdout] | [INFO] [stdout] 598 | b.iter(&mut map, |m| { [INFO] [stdout] | ___________^^^^_--------__- [INFO] [stdout] | | | [INFO] [stdout] | | expected 1 argument [INFO] [stdout] 599 | | let w = Wrapper::new(&DriverType::Mysql).eq("id", 1) [INFO] [stdout] 600 | | .ne("id", 1) [INFO] [stdout] 601 | | .in_array("id", &[1, 2, 3]) [INFO] [stdout] ... | [INFO] [stdout] 612 | | .check().unwrap(); [INFO] [stdout] 613 | | }); [INFO] [stdout] | |_________- supplied 2 arguments [INFO] [stdout] | [INFO] [stdout] note: associated function defined here [INFO] [stdout] --> src/utils/bencher.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn iter(&mut self, func: F) where F: Fn() { [INFO] [stdout] | ^^^^ --------- ------- [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 65 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0061, E0282, E0432, E0433, E0698. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0061`. [INFO] [stdout] [INFO] [stderr] error: build failed [INFO] running `Command { std: "docker" "inspect" "e072c6c52b45bf9156714b356b08a7ea77fc33b66ab6326d892d9b233f8f8d8e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e072c6c52b45bf9156714b356b08a7ea77fc33b66ab6326d892d9b233f8f8d8e", kill_on_drop: false }` [INFO] [stdout] e072c6c52b45bf9156714b356b08a7ea77fc33b66ab6326d892d9b233f8f8d8e