按照Rust的书,我创建了一个具有以下结构的项目:
├── src
├── lib.rs
├── main.rs
└── list.rs
,文件内容为:
list.rs
use std::marker::PhantomData;
#[derive(Debug)]
pub struct List<T> {
phantom: PhantomData<T>
}
impl<T> List<T> {
pub fn new() -> List<T> {
List { phantom: PhantomData }
}
}
main.rs
extern crate stl;
use stl::list::List;
fn main() {
let l: List<i32> = List::new();
println!("{:?}", l);
}
lib.rs
pub mod list;
我的目标是使用STL中的结构;换句话说,我想写这样的东西:
use stl;// or use stl::{List, Vector};
fn main() {
let l: List<i32> = List::new();
let v: Vector<u64> = Vector::new();
}
如果我在list.rs中写
mod stl {
pub struct List<T> {
// ...
}
}
在main.rs中引用List
的唯一方法是
let l: stl::list::stl::List<i32> = ...;
这太可怕了
如何为我的目的在模块和文件之间拆分结构?