#pub #book #publishing #re-exports #section #art #chapter

bin+lib rust_book_art

来自Rust书第14章第2节的Crate,演示了pub use和Crate发布

2个版本

0.1.1 2021年8月21日
0.1.0 2021年8月21日

#10 in #pub

MIT/Apache

5KB

艺术

一个用于建模艺术概念的库。(实际上,它只是用于了解如何使用pub use重新导出项目,以提供更便捷的公共API,为用户提供比内部层次结构更便捷的替代方案。)

这是来自Rust书第14章第2节的内容。

重新导出项目

依赖于这个库的Crate可以编写如下内容

use rust_book_art::kinds::PrimaryColour;
use rust_book_art::utils::mix;

fn main() {
    let red = PrimaryColour::Red;
    let yellow = PrimaryColour::Yellow;
    mix(red, yellow);
}

这将要求art库的用户弄清楚颜色位于kinds模块中,而mix位于utils模块中。这种层次结构对开发art库的人来说更有用,而不是那些只是在自己的项目中使用它的人。

使用重新导出,Crate用户可以编写如下内容

use rust_book_art::PrimaryColour;
use rust_book_art::mix;

fn main() {
    // --snip--
}

重新导出深层嵌套的模块,将内部结构从用户所见的内容中分离出来,可以提高用户体验,并允许在Crate代码的内部结构中具有灵活性。

发布Crate

这个Crate的另一个原因是我想学习如何发布到crates.io。

首先,创建一个crates.io账户,并在crates.io/me处获取API令牌,然后运行cargo login <token>。令牌保存在~/.cargo/credentials中。

无运行时依赖