3
不可见我有下面的代码:一般性状外部模块
pub trait Osm<T> {
fn get_points(&self) -> Vec<Point<T>>;
}
#[deriving(Show, PartialEq, Clone)]
pub struct Point<T> {
pub lat: T,
pub lon: T,
}
#[deriving(Show, PartialEq, Clone)]
pub struct Node<T> {
pub point: Point<T>,
}
impl<T: Clone> Osm<T> for Node<T> {
fn get_points(&self) -> Vec<Point<T>> {
return vec![self.point.clone()];
}
}
当我把这个代码,主要和拨打:
let b = Node { point: Point { lat: 10i64, lon: 12i64 }};
println!("{}", b.get_points());
一切工作的罚款。
但是,当我把它放到另一个模块得到一个错误:
/prj/src/main.rs:64:22: 64:34 error: type `osm::test::Node<i64>` does not implement any method in scope named `get_points`
/prj/src/main.rs:64 println!("{}", b.get_points());
^~~~~~~~~~~~
error: aborting due to previous error
我有点困惑,为什么它不能正常工作,可能是让因为主要的私有方法都做工精细,但当我尝试使用pub
它显示的关键字unnecessary visibility qualifier
构建错误。那么我可以为外部模块使用通用特征吗?