Что-то вроде
use super::gmp::mpz::Mpz;
...
pub type MyMPZ = Mpz;
...
fn a() -> Option<MyMPZ>;
Он (наряду со многими другими файлами Rust, библиотеками и другими зависимостями) компилируется и работает нормально на Ubuntu и даже Windows, но на macOS Mojave
Я получаю
ожидаемая структура `gmp :: mpz :: Mpz`, найдено enum` std :: option :: Option`
примечание: ожидаемый тип `& gmp :: mpz :: Mpz`
найден тип `& std :: option :: Option`
Я установил GMP с Brew, но я попытался с GMP 6.1.2, созданной мной, с теми же результатами.
Обновление 1:
Кажется, MCVE не имеет особого смысла, так как у меня есть две точные копии проекта в одном корне, такие как root \ example1 и root \ example2. Одна копия строится нормально, другая выдает сообщение об ошибке. Попробовал очистить груз и т. Д. Несколько раз с тем же эффектом.
Обновление 2:
Кажется, это определенно какая-то проблема с кэшированием. Потому что, когда я строю зависимости, они берут 32-битную версию gmp.lib, созданную по заказу, из C:\Users\<userName>\.rustup\toolchains\nightly-i686-pc-windows-msvc\lib\rustlib\i686-pc-windows-msvc\lib
. Поэтому, если я проверяю зависимость и строю ее отдельно - тесты запускаются там. Если я собираю весь проект и использую свои собственные ящики с зависимостями сборки как .lib, я в какой-то момент получаю
ожидается структура `gmp :: mpz :: Mpz`, найдена другая структура` gmp :: mpz :: Mpz`
для меня это похоже на смешивание 32/64 битных библиотек GMP.