Macros 包含的源看不到随使用导入的类型

Macros 包含的源看不到随使用导入的类型,macros,include,rust,Macros,Include,Rust,我正在努力包括!一些自动生成的代码进入一个模块。我的模块看起来像 use libc::c_int; mod nif_versions { include!(concat!(env!("OUT_DIR"), "/nif_versions.snippet")); } 。。。nif_versions.snippet看起来像 const NIF_MAJOR_VERSION: c_int = 2; const NIF_MINOR_VERSION: c_int = 7; 但这给了我以下错误: /hom

我正在努力包括!一些自动生成的代码进入一个模块。我的模块看起来像

use libc::c_int;

mod nif_versions {
include!(concat!(env!("OUT_DIR"), "/nif_versions.snippet"));
}
。。。nif_versions.snippet看起来像

const NIF_MAJOR_VERSION: c_int = 2;
const NIF_MINOR_VERSION: c_int = 7;
但这给了我以下错误:

/home/goertzen/ruster/target/build/ruster-7f1b6b5473eea720/out/nif_versions.snippet:1:26: 1:31 error: use of undeclared type name `c_int`
/home/goertzen/ruster/target/build/ruster-7f1b6b5473eea720/out/nif_versions.snippet:1 const NIF_MAJOR_VERSION: c_int = 2;
                                                                                                               ^~~~~
note: in expansion of include!

如果我跳过包含!手动粘贴这两行,一切正常。此外,我还必须将include包装到一个模块中,以使其能够正常工作。如果可能的话,我想去掉它。

您只需要将
使用libc::c_int
移动到内部
mod
声明,因为
使用的
仅在使用的模块内部有效:

mod nif_versions {
    use libc::c_int;
    include!(concat!(env!("OUT_DIR"), "/nif_versions.snippet"));
}

您只需将
use libc::c_int
移动到内部
mod
声明,因为
use
s仅在使用它们的模块内有效:

mod nif_versions {
    use libc::c_int;
    include!(concat!(env!("OUT_DIR"), "/nif_versions.snippet"));
}

您只需将
use libc::c_int
移动到内部
mod
声明,因为
use
s仅在使用它们的模块内有效:

mod nif_versions {
    use libc::c_int;
    include!(concat!(env!("OUT_DIR"), "/nif_versions.snippet"));
}

您只需将
use libc::c_int
移动到内部
mod
声明,因为
use
s仅在使用它们的模块内有效:

mod nif_versions {
    use libc::c_int;
    include!(concat!(env!("OUT_DIR"), "/nif_versions.snippet"));
}

您可能需要使用libc::c_int也包含在代码段中,因为它更适合绑定在那里…Shepmaster:这本身无法编译,但是如果我将模块包装器包含在代码段中,那么它确实可以工作。我想我会这样做,并将我的代码片段视为完全自包含的模块,而不是代码片段也包含在代码段中,因为它更适合绑定在那里…Shepmaster:这本身无法编译,但是如果我将模块包装器包含在代码段中,那么它确实可以工作。我想我会这样做,并将我的代码片段视为完全自包含的模块,而不是代码片段也包含在代码段中,因为它更适合绑定在那里…Shepmaster:这本身无法编译,但是如果我将模块包装器包含在代码段中,那么它确实可以工作。我想我会这样做,并将我的代码片段视为完全自包含的模块,而不是代码片段也包含在代码段中,因为它更适合绑定在那里…Shepmaster:这本身无法编译,但是如果我将模块包装器包含在代码段中,那么它确实可以工作。我想我会这样做,并将我的代码片段视为完全自包含的模块,而不是代码片段没有包装器模块的文件。如果这仍然是一个问题,您可能想问第二个问题。我尝试了未包装的包含!你知道吗,成功了!我一定是有什么别的东西把编译搞砸了。我能够
包括在内没有包装器模块的文件。如果这仍然是一个问题,您可能想问第二个问题。我尝试了未包装的包含!你知道吗,成功了!我一定是有什么别的东西把编译搞砸了。我能够
包括在内没有包装器模块的文件。如果这仍然是一个问题,您可能想问第二个问题。我尝试了未包装的包含!你知道吗,成功了!我一定是有什么别的东西把编译搞砸了。我能够
包括在内没有包装器模块的文件。如果这仍然是一个问题,您可能想问第二个问题。我尝试了未包装的包含!你知道吗,成功了!我一定是被别的什么东西搞砸了。