Rust 使用不同大小的类型调用transmute

Rust 使用不同大小的类型调用transmute,rust,Rust,我正在尝试使用货物构建构建构建一个Rust项目,但出现以下错误: error[E0512]:使用不同大小的类型调用transmute | 90 |:::std::mem::transmute(tenv) | ^^^^^^^^^^^^^^^^^^^^^ | =注:源类型:i32(32位) =注意:目标类型:*mut traction::Environment目标类型是指针,因此它是特定于体系结构的:32位平台上32位,64位平台上64位usize和isize可用于此情况 如果不是您的代码,

我正在尝试使用
货物构建构建
构建一个Rust项目,但出现以下错误:

error[E0512]:使用不同大小的类型调用transmute
|
90 |:::std::mem::transmute(tenv)
|     ^^^^^^^^^^^^^^^^^^^^^
|
=注:源类型:i32(32位)

=注意:目标类型:*mut traction::Environment目标类型是指针,因此它是特定于体系结构的:32位平台上32位,64位平台上64位<代码>usize
isize
可用于此情况

如果不是您的代码,您应该在原始存储库中打开一个问题

您可以尝试使用
rustup default stable-i686

transmute
如何知道转换给它的变量的类型<代码>::std::mem::transmute(tenv)
只接受一个参数,那么它如何知道源类型和目标类型呢


Rust从上下文推断源和目标类型,其方法与Iterator::collect的方法相同。

代码中是否有任何快速修复方法?可能指定某个位置
64
,而不是
32
或反之亦然?尝试构建一个32位二进制文件:使用rustup default stable-i686。当然,您仍然可以将::std::mem::transmute(tenv)更改为::std::mem::transmute(tenv as i64),但IDK如果有效:DRunning
rustup default stable-i686
会导致
线程'main'恐慌于'找不到libclang:'libclang'共享库无法打开:/usr/local/opt/llvm/libclang.dylib““
@octavian:最快的修复方法是用叉子叉板条箱(其代码可能在github上),用
isize
而不是
i32
对其进行修补,然后使用本地叉子,直到您的PR合并到正式的PR中。
let tenv = env.get_field_unsafe(obj, JFieldID::from(field), jni::signature::JavaType::Primitive(jni::signature::Primitive::Int)).unwrap_alog().i().unwrap();
::std::mem::transmute(tenv)