在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