rust_book_art

Crates.iorust_book_art
lib.rsrust_book_art
version0.1.1
sourcesrc
created_at2021-08-21 15:02:38.685314
updated_at2021-08-21 15:10:58.784628
descriptionCrate from Chapter 14 Section 2 of the Rust book, demonstrating `pub use` and crate publishing.
homepage
repository
max_upload_size
id440339
size6,493
(xfqerr)

documentation

https://docs.rs/rust_book_art

README

Art

A library for modelling artistic concepts. (Actually, it's just for learning about using pub use to re-export items in order to present a more convenient public API, providing a more convenient alternative to a crate user than the internal hierarchy.)

This is from Chapter 14 Section 2 of the Rust book.

Re-exporting items

A crate that depends on this library could write something like this:

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);
}

This would required the user of the art crate to figure out that colours are in the kinds module and mix is in the utils module. That hierarchy is more useful to someone developing the art crate than someone just using it in their own project.

Using the re-exports, a crate user could write this instead:

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

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

Re-exporting deeply nested modules and decoupling internal structure from what the user sees can improve the user's experience, and allows flexibility in the internal structure of the crate code.

Publishing crates

Another reason for this crate is so I can learn about publishing to crates.io.

First, make a crates.io account and get an API token from crates.io/me, then run cargo login <token>. The token is saved in ~/.cargo/credentials.

Commit count: 0

cargo fmt