API Design

Refer to the Rust API Design guidelines. https://rust-lang.github.io/api-guidelines/