rust-sqlx: Lazy instance has previously been poisoned - rust

I'm trying to run cargo fix on a project that uses slqx and am getting the following error:
error: proc macro panicked
--> src/twitter/domain/user.rs:54:5
|
54 | / sqlx::query!(
55 | | r#"
56 | | INSERT INTO users
57 | | (id, created_at,
... |
84 | | user["public_metrics"]["tweet_count"].as_i64(),
85 | | )
| |_____^
|
= help: message: Lazy instance has previously been poisoned
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
...for every instance of sqlx macro I have in my code. The weird thing is it used to work just fine, but for some reason doesn't anymore.
The only mention of the error on Google that I found is here, but I don't think it's relevant.
What might be wrong?

Related

Rust derive default on enum to remove need for impl block

~/Workspace/microscaler/docker-api-rs on fix/linting-issues cargo clippy --all-targets --all-features -- -D clippy::all -Z macro-backtrace ✔ at 20:14:11
Checking docker-api v0.12.2 (/Users/casibbald/Workspace/microscaler/docker-api-rs)
error: this `impl` can be derived
--> src/opts/container.rs:50:1
|
50 | / impl Default for Isolation {
51 | | fn default() -> Self {
52 | | Isolation::Default
53 | | }
54 | | }
| |_^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls
= note: `-D clippy::derivable-impls` implied by `-D clippy::all`
= help: remove the manual implementation...
help: ...and instead derive it...
|
43 | #[derive(Default)]
|
help: ...and mark the default variant
|
45 ~ #[default]
46 ~ Default,
|
error: could not compile `docker-api` due to previous error
warning: build failed, waiting for other jobs to finish...
error: could not compile `docker-api` due to previous error
The following help page is referred to:
https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls
However, adding #[derive(Default)] does not seem so straightforward when multiple items exist.
Source code here:
https://github.com/microscaler/docker-api-rs/blob/d85deec98a10dcc2f6a1ed7c324010e28d437941/src/opts/container.rs#L50
The following does not work:
Checking docker-api v0.12.2 (/Users/casibbald/Workspace/microscaler/docker-api-rs)
error: no default declared
--> src/opts/container.rs:41:10
|
41 | #[derive(Default, Clone, Debug, Serialize, Deserialize)]
| ^^^^^^^ in this derive macro expansion
|
::: /Users/casibbald/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/default.rs:186:1
|
186 | pub macro Default($item:item) {
| ----------------- in this expansion of `#[derive(Default)]`
|
= help: make a unit variant default by placing `#[default]` above it
Read the compiler/linter messages, they tell you exactly what to do:
= help: remove the manual implementation...
help: ...and instead derive it...
|
43 | #[derive(Default)]
|
help: ...and mark the default variant
|
45 ~ #[default]
46 ~ Default,
|
= help: make a unit variant default by placing `#[default]` above it
Like this:
#[derive(Default, Clone, Debug)]
pub enum Isolation {
#[default]
Default,
Process,
HyperV,
}

Rust compilation errors on installaton of libcst on alpine python

trying to install python modules on alpine linux using 3.7.9 image of alpine-python
Not able to find any solution on how to get the below issues resolved, any assistance would help a lot.
error[E0658]: or-patterns syntax is experimental
6908 --> libcst/src/tokenizer/core/mod.rs:944:25
6909 |
6910 944 | / '\n'
6911 945 | | | '\\'
6912 946 | | | '\''
6913 947 | | | '"'
6914 ... |
6915 958 | | | 'u'
6916 959 | | | 'U',
6917 | |_____________________________^
6918 |
6919 = note: see issue #54883 <https://github.com/rust-lang/rust/issues/54883> for more information
6920
6921 error[E0658]: or-patterns syntax is experimental
6922 --> libcst/src/tokenizer/core/mod.rs:976:33
6923 |
6924 976 | if let Some('"' | '\'') = self.text_pos.peek() {
6925 | ^^^^^^^^^^
6926 |
6927 = note: see issue #54883 <https://github.com/rust-lang/rust/issues/54883> for more information
6928
6929 error[E0658]: or-patterns syntax is experimental
6930 --> libcst/src/parser/grammar.rs:3203:14
6931 |
6932 3203 | e # (Expression::Integer(_) | Expression::Float(_)) => Ok(e),
6933 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
6934 |
6935 = note: see issue #54883 <https://github.com/rust-lang/rust/issues/54883> for more information
6936
6937 error[E0658]: use of unstable library feature 'split_inclusive'
6938 --> libcst/src/tokenizer/whitespace_parser.rs:84:26
6939 |
6940 84 | lines: input.split_inclusive(default_newline).collect(),
6941 | ^^^^^^^^^^^^^^^
6942 |
6943 = note: see issue #72360 <https://github.com/rust-lang/rust/issues/72360> for more information
6944
6945 error: aborting due to 4 previous errors
6946
6947 For more information about this error, try `rustc --explain E0658`.
6948 error: could not compile `libcst`.
6949
6950 Caused by:
6953 error: `cargo rustc --lib --message-format=json-render-diagnostics --manifest-path native/libcst/Cargo.toml --release -v --features pyo3/extension-module -- --crate-type cdylib` failed with code 101
6954 [end of output]
6955
6956 note: This error originates from a subprocess, and is likely not a problem with pip.
6957 ERROR: Failed building wheel for libcst
“use of unstable library feature” and “syntax is experimental” indicate you are using a version of the Rust compiler older than that required for this program.
or_patterns was stabilized in Rust 1.53. split_inclusive was stabilized in Rust 1.51 (look at the version number on the right side of the method entry).
You will need to install Rust 1.53 or newer. Right now, you are using a version that is more than a year old.

What to do about "match is not allowed in a const fn" error?

When running the command:
cargo install cargo-generate --features vendored-openssl
I am getting the following error:
error[E0658]: `match` is not allowed in a `const fn`
--> /home/pam/.cargo/registry/src/github.com-1ecc6299db9ec823/socket2-0.4.0/src/lib.rs:156:9
|
156 | / match address {
157 | | SocketAddr::V4(_) => Domain::IPV4,
158 | | SocketAddr::V6(_) => Domain::IPV6,
159 | | }
| |_________^
|
= note: for more information, see https://github.com/rust-lang/rust/issues/49146
error[E0599]: no associated item named `MAX` found for type `usize` in the current scope
--> /home/pam/.cargo/registry/src/github.com-1ecc6299db9ec823/socket2-0.4.0/src/sys/unix.rs:680:46
|
680 | msg.msg_iovlen = min(bufs.len(), IovLen::MAX as usize) as IovLen;
| ^^^ associated item not found in `usize`
error[E0599]: no associated item named `MAX` found for type `usize` in the current scope
--> /home/pam/.cargo/registry/src/github.com-1ecc6299db9ec823/socket2-0.4.0/src/sys/unix.rs:740:46
|
740 | msg.msg_iovlen = min(bufs.len(), IovLen::MAX as usize) as IovLen;
| ^^^ associated item not found in `usize`
error: aborting due to 3 previous errors
Some errors have detailed explanations: E0599, E0658.
For more information about an error, try `rustc --explain E0599`.
error: could not compile `socket2`.
warning: build failed, waiting for other jobs to finish...
error: failed to compile `cargo-generate v0.6.1`, intermediate artifacts can be found at `/tmp/cargo-install7B7MDG`
Caused by:
build failed
Using Rust version 1.41.0 on Ubuntu 20.04.2 LTS. What am I missing here?
Updating Rust worked for me:
curl https://sh.rustup.rs -sSf | sh
New version 1.52.0

build failed in substrate.dev Ink! tutorial. sp-aritmetic lack of type? [closed]

Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 2 years ago.
Improve this question
My build has failed.
Everything looked good up until I tested my contract with the command:
cargo +nightly test
I got error [E0282]
Here is the whole error report:
error[E0282]: type annotations needed
--> /home/mal/.cargo/registry/src/github.com-1ecc6299db9ec823/sp-arithmetic-2.0.0/src/fixed_point.rs:541:9
|
541 | let accuracy = P::ACCURACY.saturated_into();
| ^^^^^^^^ consider giving `accuracy` a type
...
1595 | / implement_fixed!(
1596 | | FixedI64,
1597 | | test_fixed_i64,
1598 | | i64,
... |
1601 | | "_Fixed Point 64 bits signed, range = [-9223372036.854775808, 9223372036.854775807]_",
1602 | | );
| |__- in this macro invocation
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0282]: type annotations needed
--> /home/mal/.cargo/registry/src/github.com-1ecc6299db9ec823/sp-arithmetic-2.0.0/src/fixed_point.rs:541:9
|
541 | let accuracy = P::ACCURACY.saturated_into();
| ^^^^^^^^ consider giving `accuracy` a type
...
1604 | / implement_fixed!(
1605 | | FixedI128,
1606 | | test_fixed_i128,
1607 | | i128,
... |
1611 | | [-170141183460469231731.687303715884105728, 170141183460469231731.687303715884105727]_",
1612 | | );
| |__- in this macro invocation
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0282]: type annotations needed
--> /home/mal/.cargo/registry/src/github.com-1ecc6299db9ec823/sp-arithmetic-2.0.0/src/fixed_point.rs:541:9
|
541 | let accuracy = P::ACCURACY.saturated_into();
| ^^^^^^^^ consider giving `accuracy` a type
...
1614 | / implement_fixed!(
1615 | | FixedU128,
1616 | | test_fixed_u128,
1617 | | u128,
... |
1621 | | [0.000000000000000000, 340282366920938463463.374607431768211455]_",
1622 | | );
| |__- in this macro invocation
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 3 previous errors
For more information about this error, try `rustc --explain E0282`.
error: could not compile `sp-arithmetic`
This is part of a wider tutorial.
I believe rust is updated.
The problem seems to be the macro sp-aritmetic, however I am not sure how to give it a "type". My rust is non-existent...
Really eager to get into Ink! so any help is appreciated.
The cause of that error is a regression in the rust nightly compiler starting with version 2020-10-06. You need to rustup toolchain install 2020-10-05 and use that one for building your runtime until this issue is resolved. Usually, the latest nightly is automatically used to build your runtime. You can override this behaviour by setting the WASM_BUILD_TOOLCHAIN environment variable. In this case:
export WASM_BUILD_TOOLCHAIN='nightly-2020-10-05'
In case of building a contract with cargo contract you should use:
cargo +nightly-2020-10-05 contract build

How to include modules for code coverage for unit testing?

My assumption is that any module tested using Intern will automatically be covered by Istanbul's code coverage. For reasons unknown to me, my module is not being included.
I am:
running Intern 1.6.2 (installed with npm locally)
testing NodeJS code
using callbacks, not promises
using CommonJS modules, not AMD modules
Directory Structure (only showing relevant files):
plister
|
|--libraries
| |--file-type-support.js
|
|--tests
| |--intern.js
| |--unit
| |--file-type-support.js
|
|--node_modules
|--intern
plister/tests/intern.js
define({
useLoader: {
'host-node': 'dojo/dojo'
},
loader: {
packages: [
{name: 'libraries', location: 'libraries'}
]
},
reporters: ['console'],
suites: ['tests/unit/file-type-support'],
functionalSuites: [],
excludeInstrumentation: /^(tests|node_modules)\//
});
plister/tests/unit/file-type-support.js
define([
'intern!bdd',
'intern/chai!expect',
'intern/dojo/node!fs',
'intern/dojo/node!path',
'intern/dojo/node!stream-equal',
'intern/dojo/node!../../libraries/file-type-support'
], function (bdd, expect, fs, path, streamEqual, fileTypeSupport) {
'use strict';
bdd.describe('file-type-support', function doTest() {
bdd.it('should show that the example output.plist matches the ' +
'temp.plist generated by the module', function () {
var deferred = this.async(),
input = path.normalize('tests/resources/input.plist'),
output = path.normalize('tests/resources/output.plist'),
temporary = path.normalize('tests/resources/temp.plist');
// Test deactivate function by checking output produced by
// function against test output.
fileTypeSupport.deactivate(fs.createReadStream(input),
fs.createWriteStream(temporary),
deferred.rejectOnError(function onFinish() {
streamEqual(fs.createReadStream(output),
fs.createReadStream(temporary),
deferred.callback(function checkEqual(error, equal) {
expect(equal).to.be.true;
}));
}));
});
});
});
Output:
PASS: main - file-type-support - should show that the example output.plist matches the temp.plist generated by the module (29ms)
1/1 tests passed
1/1 tests passed
Output (on failure):
FAIL: main - file-type-support - should show that the example output.plist matches the temp.plist generated by the module (30ms)
AssertionError: expected true to be false
AssertionError: expected true to be false
0/1 tests passed
0/1 tests passed
npm ERR! Test failed. See above for more details.
npm ERR! not ok code 0
Output (after removing excludeInstrumentation):
PASS: main - file-type-support - should show that the example output.plist matches the temp.plist generated by the module (25ms)
1/1 tests passed
1/1 tests passed
------------------------------------------+-----------+-----------+-----------+-----------+
File | % Stmts |% Branches | % Funcs | % Lines |
------------------------------------------+-----------+-----------+-----------+-----------+
node_modules/intern/ | 70 | 50 | 100 | 70 |
chai.js | 70 | 50 | 100 | 70 |
node_modules/intern/lib/ | 79.71 | 42.86 | 72.22 | 79.71 |
Test.js | 79.71 | 42.86 | 72.22 | 79.71 |
node_modules/intern/lib/interfaces/ | 80 | 50 | 63.64 | 80 |
bdd.js | 100 | 100 | 100 | 100 |
tdd.js | 76.19 | 50 | 55.56 | 76.19 |
node_modules/intern/lib/reporters/ | 56.52 | 35 | 57.14 | 56.52 |
console.js | 56.52 | 35 | 57.14 | 56.52 |
node_modules/intern/node_modules/chai/ | 37.9 | 8.73 | 26.38 | 39.34 |
chai.js | 37.9 | 8.73 | 26.38 | 39.34 |
tests/unit/ | 100 | 100 | 100 | 100 |
file-type-support.js | 100 | 100 | 100 | 100 |
------------------------------------------+-----------+-----------+-----------+-----------+
All files | 42.14 | 11.35 | 33.45 | 43.63 |
------------------------------------------+-----------+-----------+-----------+-----------+
My module passes the test and I can make it fail too. It just will not show up in the code coverage. I have done the tutorial hosted on GitHub without any problems.
I tried dissecting the Istanbul and Intern dependencies. I place a console.log where it seems files to be covered go through, but my module doesn't get passed. I have tried every variation of deferred.callback and deferred.rejectOnError with no difference to the code coverage.
Also, any feedback on my use of deferred.callback and deferred.rejectOnError will be greatly appreciated. I am still a little uncertain on their usage.
Thanks!
As of Intern 1.6, only require('vm').runInThisContext is hooked to add code coverage data, not require. Instrumentation of require was added in Intern 2.0.
The use of callback/rejectOnError in the above code is correct.

Resources