Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

matrixcompare uses num_traits::Float without std #3

Closed
0ncorhynchus opened this issue Sep 1, 2020 · 3 comments · Fixed by #4
Closed

matrixcompare uses num_traits::Float without std #3

0ncorhynchus opened this issue Sep 1, 2020 · 3 comments · Fixed by #4

Comments

@0ncorhynchus
Copy link
Contributor

This is a bug report.

I tried to use matrixcompare as a dependency with a tiny sample Cargo.toml shown as the below:

[package]
name = "tmp"
version = "0.1.0"
edition = "2018"

[dependencies]
matrixcompare = "0.1.3"

However, cargo check failed with the message like:

$ cargo check
    Checking matrixcompare v0.1.3
error[E0432]: unresolved import `num_traits::Float`
 --> /home/kato/.cargo/registry/src/gh.neting.cc-1ecc6299db9ec823/matrixcompare-0.1.3/src/comparators.rs:5:18
  |
5 | use num_traits::{Float, Num};
  |                  ^^^^^
  |                  |
  |                  no `Float` in the root
  |                  help: a similar name exists in the module (notice the capitalization): `float`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0432`.
error: could not compile `matrixcompare`.

To learn more, run the command again with --verbose.

This is caused by that matrixcompare uses num_traits::Float without the std feature of num-traits.
I found out from Cargo.toml of this crate that it is expected behavior to use num-traits without the std feature.

num-traits = { version = "0.2", default-features = false }

On the other hand, num-traits doesn't export Float without std or libm features.

So, matrixcompare tries to use num_traits::Float, which is not exported.

By the way, matrixcompare is successfully built on the CI now. This is due to the bug of cargo.
matrixcompare uses proptest as a dev-dependency. (and it uses num-traits with the default features including std!)
This is the reason that cargo uses num-traits with the std feature when building matrixcompare as a root crate.
At the last, when I tried to build matrixcompare with the nightly version of cargo, building failed:

$ cargo +nightly -Z features=dev_dep check
   Compiling autocfg v1.0.1
    Checking matrixcompare-core v0.1.0 (/home/kato/wrk/develop/matrixcompare/matrixcompare-core)
   Compiling num-traits v0.2.12
    Checking matrixcompare v0.1.3 (/home/kato/wrk/develop/matrixcompare)
error[E0432]: unresolved import `num_traits::Float`
 --> src/comparators.rs:5:18
  |
5 | use num_traits::{Float, Num};
  |                  ^^^^^
  |                  |
  |                  no `Float` in the root
  |                  help: a similar name exists in the module (notice the capitalization): `float`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0432`.
error: could not compile `matrixcompare`.

To learn more, run the command again with --verbose.
@Andlon
Copy link
Owner

Andlon commented Jan 13, 2021

Hi @0ncorhynchus, thanks for figuring this out! I'm sorry I didn't get back to you sooner, I don't recall having being notified of this issue, so I unfortunately missed it. I will take a look at your PR now and publish an updated release shortly!

@Andlon Andlon closed this as completed in #4 Jan 13, 2021
Andlon added a commit that referenced this issue Jan 13, 2021
This prevents issue #3 from re-occurring.
@Andlon
Copy link
Owner

Andlon commented Jan 13, 2021

In addition to merging your PR, I added the compilation of a "hello world" crate (basically your example) to the CI, to prevent future regressions. Thanks again for notifying me of the issue!

(For some reason, notifications were not enabled on this repo for me, which is why I did not notice your issue before now. In the future, I should hopefully receive notifications in a timely manner.)

@0ncorhynchus
Copy link
Contributor Author

Don't worry about it 😃
I thank you for your good project!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants