在src/lib.rs
我有以下如何从兄弟模块导入?
extern crate opal_core;
mod functions;
mod context;
mod shader;
然后在src/context.rs
我有这样的事情,它试图从src/shader.rs
符号输入:
use opal_core::shader::Stage;
use opal_core::shader::Shader as ShaderTrait;
use opal_core::GraphicsContext as GraphicsContextTrait;
use functions::*; // this import works fine
use shader::*; // this one doesn't
pub struct GraphicsContext {
functions: Gl
}
fn shader_stage_to_int(stage: &Stage) -> u32 {
match stage {
&Stage::Vertex => VERTEX_SHADER,
&Stage::Geometry => GEOMETRY_SHADER,
&Stage::Fragment => FRAGMENT_SHADER,
}
}
impl GraphicsContextTrait for GraphicsContext {
/// Creates a shader object
fn create_shader(&self, stage: Stage, source: &str) -> Box<ShaderTrait> {
let id;
unsafe {
id = self.functions.CreateShader(shader_stage_to_int(&stage));
}
let shader = Shader {
id: id,
stage: stage,
context: self
};
Box::new(shader)
}
}
的问题是,该声明use shader::*;
给出了错误未解决的进口。
我读的文档和他们说use
语句总是从当前箱(opal_driver_gl
)的根去,所以我认为shader::*
应该导入opal_driver_gl::shader::*
但它似乎没有这样做。我需要在这里使用self
或super
关键字吗?
如果你可以帮忙,谢谢。
你看过任何[提及相同错误的其他问题](http://stackoverflow.com/search?q=% 5Brust%5D +未决+进口)?如果是这样,你的问题与他们有什么不同?你有没有尝试制作一个[小型测试用例](/ help/mcve)? – Shepmaster
我已经签出了大部分“未解决的导入”问题。他们大多围绕着从箱子外面得到符号,但我想做相反的事情。我会尽量缩小问题的范围。 – neon64
告诉我们您尝试了什么以及您遇到了哪些问题是一种很好的做法。还包括为什么这些尝试和问题不起作用或者你不了解他们。这可以防止我们猜测你真正的问题是什么,让你更容易得到答案,并且通常会提高你的问题对未来的搜索者的有用程度。 – Shepmaster