簡單的防鏽問題,我似乎無法找到答案:正確的方式使用防鏽結構從其他MODS
我已經定義在一個單獨的文件的結構。當我想在文件的頂部使用該支撐做這樣的事情:
use other_file::StructName;
mod other_file;
當我創建一個使用此類型
fn test(other : StructName) {};
我得到一個有關使用私有類型警告的功能。我寫的時候這個錯誤是固定的:
fn test(other : other_file::StructName) {};
雖然這需要大量額外的輸入。我也可以用pub use
將模塊再次導出,但我真的想保留它隱藏。
如何正確包含模塊以保存輸入?相當於我想要的蟒蛇是
from other_file import StructName
=====編輯/示例代碼=======
上面的代碼似乎沒有再現或描述我有問題。以下確定在2個文件中。它是一些矩陣數學應用的精簡版。
geometry.rs
use geometry::{Vec3};
mod geometry;
#[deriving(Eq, Clone, Show)]
pub struct Mat4 {
data : ~[f32]
}
impl Mat4 {
fn apply_Vec3(&self, other : &Vec3) -> Vec3{
let x = self.data[0] * other.x + self.data[1] * other.y + self.data[2] * other.z;
let y = self.data[4] * other.x + self.data[5] * other.y + self.data[6] * other.z;
let z = self.data[8] * other.x + self.data[9] * other.y + self.data[10]* other.z;
Vec3::new(x, y, z)
}
}
#[deriving(Eq, Clone, Show)]
pub struct Transform {
mat : Mat4
}
impl Transform {
pub fn apply_Vec3(&self, vec : &Vec3) -> Vec3 {
self.mat.apply_Vec3(vec)
}
}
transform.rs
#[deriving(Eq, Clone, Show)]
pub struct Vec3 {
x : f32,
y : f32,
z : f32
}
impl Vec3 {
pub fn new(x : f32, y : f32, z : f32) -> Vec3 {
Vec3{x : x, y : y, z : z}
}
}
當rustc --test transform.rs編譯,我得到兩個錯誤:
transform.rs:25:39: 25:43 warning: private type in exported type signature, #[warn(visible_private_types)] on by default
transform.rs:25 pub fn apply_Vec3(&self, vec : &Vec3) -> Vec3 {
^~~~
transform.rs:25:48: 25:52 warning: private type in exported type signature, #[warn(visible_private_types)] on by default
transform.rs:25 pub fn apply_Vec3(&self, vec : &Vec3) -> Vec3 {
^~~~
鑑於對回送一個專用型的警告,這顯然不是你做的相當的。你能分享你的整個代碼庫嗎? –
更新並添加完整的代碼示例。對不起,缺乏清晰度。 – luke