There is this nice checklist on things to do to develop a nice api in rust, we should check it out and see if there is room of improvements in our APIs https://rust-lang.github.io/api-guidelines/checklist.html
Rust API Guidelines Checklist
Naming (crate aligns with Rust naming conventions)
Interoperability (crate interacts nicely with other library functionality)
Macros (crate presents well-behaved macros)
Documentation (crate is abundantly documented)
Crate level docs are thorough and include examples ([C-CRATE-DOC]) Another round of docs fix + cleanups #95
All items have a rustdoc example ([C-EXAMPLE])
Examples use ?, not try!, not unwrap ([C-QUESTION-MARK]) Another round of docs fix + cleanups #95
Function docs include error, panic, and safety considerations ([C-FAILURE]) Another round of docs fix + cleanups #95
Prose contains hyperlinks to relevant things ([C-LINK]) Another round of docs fix + cleanups #95
Cargo.toml includes all common metadata ([C-METADATA]) Another round of docs fix + cleanups #95
authors, description, license, homepage, documentation, repository,
readme, keywords, categories
Crate sets html_root_url attribute "https://docs.rs/CRATE/X.Y.Z " ([C-HTML-ROOT]) Another round of docs fix + cleanups #95
Release notes document all significant changes ([C-RELNOTES])
Rustdoc does not show unhelpful implementation details ([C-HIDDEN]) Another round of docs fix + cleanups #95
Predictability (crate enables legible code that acts how it looks)
Flexibility (crate supports diverse real-world use cases)
Type safety (crate leverages the type system effectively)
Dependability (crate is unlikely to do the wrong thing)
Debuggability (crate is conducive to easy debugging)
Future proofing (crate is free to improve without breaking users' code)
Necessities (to whom they matter, they really matter)
There is this nice checklist on things to do to develop a nice api in rust, we should check it out and see if there is room of improvements in our APIs https://rust-lang.github.io/api-guidelines/checklist.html
Rust API Guidelines Checklist
as_,to_,into_conventions ([C-CONV]) Cleanup to follow C-CONV #87iter,iter_mut,into_iter([C-ITER])Copy,Clone,Eq,PartialEq,Ord,PartialOrd,Hash,Debug,Display,DefaultAlign with C-COMMON-TRAITS criteria #91From,AsRef,AsMut([C-CONV-TRAITS])FromIteratorandExtend([C-COLLECT])Serialize,Deserialize([C-SERDE])SendandSyncwhere possible ([C-SEND-SYNC]) Renamed error variants of message::Error #90Hex,Octal,Binaryformatting ([C-NUM-FMT])R: ReadandW: Writeby value ([C-RW-VALUE])?, nottry!, notunwrap([C-QUESTION-MARK]) Another round of docs fix + cleanups #95readme, keywords, categories
DerefandDerefMut([C-DEREF])boolorOption([C-CUSTOM-TYPE])bitflags, not enums ([C-BITFLAG])Debug([C-DEBUG]) Align with C-COMMON-TRAITS criteria #91Debugrepresentation is never empty ([C-DEBUG-NONEMPTY]) Align with C-COMMON-TRAITS criteria #91