code icon indicating copy to clipboard operation
code copied to clipboard

ch2-mandelbrot: could not compile `num-bigint` (lib) due to 4 previous errors

Open honsour72 opened this issue 2 years ago • 5 comments

Hello there, I just want to run mandelbrot code but after I did cargo run I get this output:

   Compiling num-bigint v0.3.0
error[E0308]: mismatched types                                                                                                                                                                       
    --> C:\Users\user\.cargo\registry\src\index.crates.io-6f17d22bba15001f\num-bigint-0.3.0\src\biguint.rs:198:19
     |
198  |         .div_ceil(&big_digit::BITS.into())
     |          -------- ^^^^^^^^^^^^^^^^^^^^^^^ expected `u64`, found `&_`
     |          |
     |          arguments to this method are incorrect
     |
     = note:   expected type `u64`
             found reference `&_`
note: method defined here
    --> C:\Users\user\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\num\mod.rs:1166:5
     |
1166 | /     uint_impl! {
1167 | |         Self = u64,
1168 | |         ActualT = u64,
1169 | |         SignedT = i64,
...    |
1183 | |         bound_condition = "",
1184 | |     }
     | |_____^
     = note: this error originates in the macro `uint_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider removing the borrow
     |
198  -         .div_ceil(&big_digit::BITS.into())
198  +         .div_ceil(big_digit::BITS.into())
     |

error[E0308]: mismatched types                                                                                                                                                                       
    --> C:\Users\user\.cargo\registry\src\index.crates.io-6f17d22bba15001f\num-bigint-0.3.0\src\biguint.rs:1700:50
     |
1700 |             let root_scale = extra_bits.div_ceil(&n64);
     |                                         -------- ^^^^ expected `u64`, found `&u64`
     |                                         |
     |                                         arguments to this method are incorrect
     |
note: method defined here
    --> C:\Users\user\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\num\mod.rs:1166:5
     |
1166 | /     uint_impl! {
1167 | |         Self = u64,
1168 | |         ActualT = u64,
1169 | |         SignedT = i64,
...    |
1183 | |         bound_condition = "",
1184 | |     }
     | |_____^
     = note: this error originates in the macro `uint_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider removing the borrow
     |
1700 -             let root_scale = extra_bits.div_ceil(&n64);
1700 +             let root_scale = extra_bits.div_ceil(n64);
     |

error[E0308]: mismatched types
    --> C:\Users\user\.cargo\registry\src\index.crates.io-6f17d22bba15001f\num-bigint-0.3.0\src\biguint.rs:2119:19
     |
2119 |         .div_ceil(&u64::from(bits))
     |          -------- ^^^^^^^^^^^^^^^^ expected `u64`, found `&u64`
     |          |
     |          arguments to this method are incorrect
     |
note: method defined here
    --> C:\Users\user\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\num\mod.rs:1166:5
     |
1166 | /     uint_impl! {
1167 | |         Self = u64,
1168 | |         ActualT = u64,
1169 | |         SignedT = i64,
...    |
1183 | |         bound_condition = "",
1184 | |     }
     | |_____^
     = note: this error originates in the macro `uint_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider removing the borrow
     |
2119 -         .div_ceil(&u64::from(bits))
2119 +         .div_ceil(u64::from(bits))
     |

error[E0308]: mismatched types
    --> C:\Users\user\.cargo\registry\src\index.crates.io-6f17d22bba15001f\num-bigint-0.3.0\src\biguint.rs:2147:19
     |
2147 |         .div_ceil(&u64::from(bits))
     |          -------- ^^^^^^^^^^^^^^^^ expected `u64`, found `&u64`
     |          |
     |          arguments to this method are incorrect
     |
note: method defined here
    --> C:\Users\user\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\num\mod.rs:1166:5
     |
1166 | /     uint_impl! {
1167 | |         Self = u64,
1168 | |         ActualT = u64,
1169 | |         SignedT = i64,
...    |
1183 | |         bound_condition = "",
1184 | |     }
     | |_____^
     = note: this error originates in the macro `uint_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider removing the borrow
     |
2147 -         .div_ceil(&u64::from(bits))
2147 +         .div_ceil(u64::from(bits))
     |

For more information about this error, try `rustc --explain E0308`.                                                                                                                                  
error: could not compile `num-bigint` (lib) due to 4 previous errors

I don't understand which line of my code provides this error 🤷‍♂️

I use RustRover from JetBrains and attach Cargo.toml:

[package]
name = "ch2-mandelbrot"
version = "0.1.0"
authors = ["Tim McNamara <[email protected]>"]
edition = "2018"

[dependencies]
num = "0.3"

Everything I did before are:

  1. cargo install cargo-edit
  2. cargo add num
  3. cargo run

honsour72 avatar Jan 22 '24 12:01 honsour72

solved by command like below

cargo update
cargo run

ruokeqx avatar Feb 10 '24 11:02 ruokeqx

Resolved, thx, @ruokeqx

honsour72 avatar Feb 11 '24 19:02 honsour72

Updating cargo and re-running worked for me too! Thanks, @ruokeqx

jamiebill avatar Apr 10 '24 15:04 jamiebill

Ran into the same issue... It seems strange to me that this could happen at all, isn't Cargo supposed to ensure proper versions and point releases shouldn't introduce breaking changes?

a2800276 avatar Aug 04 '24 12:08 a2800276

I encountered the same issue.

It seemed like there was a bug in num_bigint? cargo update resulted in Updating num-bigint v0.3.0 -> v0.3.3 (latest: v0.4.6) (and other num crate updates). Perhaps a version bump is required in Cargo.toml.

alexkingnz avatar Oct 02 '24 21:10 alexkingnz