通过模块进行包管理
rust通过模块管理项目,我们通过mod声明模块,使用use mod-name::xxx类似的样子使用模块。
可以通过crate::xxx 声明绝对路径,supper和self声明相对路径模块地址
如何创建包
rust使用文件作为mod,可以任意使用的mod
两种方式
- 1 使用同名的文件
- 2 使用mod文件
定义包的模式1代码示例
代码语言:rust复制foo/bar.rs
foo.rs
main.rs
//bar.rs
pub struct Bar;
impl Bar {
pub fn hi() {
println!("hello Bar");
}
}
//foo.rs
mod bar;
pub use self::bar::Bar;
pub fn do_foo() {
println!("hi from foo!");
}
//main.rs
mod foo;
use foo::Bar;
fn main() {
foo::do_foo();
Bar::hi();
println!("Hello, world!");
}
定义包的模式代码示例2
代码语言:txt复制foo/f1.rs
foo/g1.rs
foo/mod.rs
main.rs
//f1.rs
pub fn ff() {
println!("f1 func")
}
//g1.rs
pub fn gf() {
println!("g1 func")
}
//mod.rs
pub mod g1;
pub mod f1;
//main.rs
mod foo;
use foo::f1;
use foo::g1;
fn main() {
println!("Hello, world!");
f1::ff();
g1::gf();
}
cargo
rust的cargo类似于php的pecl,java的maven或者gradle,golang的mod,dlang的dub
创建rust项目
- 创建rust工程rust init
- 创建rust库rust init --lib
rust和其他语言包管理服务一样指定模块
- features 特性
- build-dependencies 构建时依赖
- dependencies 依赖包