与GMP相关的macOS上的Rust编译错误

Rust compile error on macOS related to GMP

类似

的东西

1
2
3
4
5
6
7
use super::gmp::mpz::Mpz;
...
pub type MyMPZ = Mpz;

...

fn a() -> Option<MyMPZ>;

它(以及许多其他Rust文件,库和其他依赖项)可以在Ubuntu甚至Windows上编译并运行正常,但可以在macOS Mojave上运行
我得到

expected struct `gmp::mpz::Mpz`, found enum `std::option::Option`

note: expected type `&gmp::mpz::Mpz`
found type `&std::option::Option`

我在Brew上安装了GMP,但是我尝试使用自己构建的GMP 6.1.2来获得相同的结果。

更新1:
似乎MCVE没有多大意义,因为我在同一根目录中有两个项目的确切副本,例如root \\\\\\\\ example1和root \\\\\\\\ example2。一份可以建立,另一份可以给出错误信息。多次尝试清洁货物以达到相同效果。

更新2:
似乎绝对是某种缓存问题。因为当我构建依赖项时,它们会从C:\\Users\\<userName>\\.rustup\\toolchains\
ightly-i686-pc-windows-msvc\\lib\
ustlib\\i686-pc-windows-msvc\\lib
中获取gmp.lib的自定义构建的32位版本。因此,如果我检出依赖性并单独构建它,则在此处运行测试。如果我构建整个项目,并使用自己的构建依赖项板条箱作为.lib,则有时会得到

expected struct `gmp::mpz::Mpz`, found another struct `gmp::mpz::Mpz`

这对我来说似乎是GMP 32/64位库的混合。


好吧,那是货物依赖地狱:)-在多次不成功的重新安装,清理等之后,我终于能够通过手动下载并重建并重新引用git所引用的依赖关系的本地路径来进行重建。从那时起-无论我是本地引用还是通过git或crate进行引用,一切都很好。