1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
#![warn(missing_docs)] //! _This is a new rustacean's first open source crate. //! It is made with the intention of serving as the go-to bookkeeping crate. //! To get there, reviews from knowledgeable rustaceans seem necessary, so if you are one, then consider giving this crate your full attention for a while and leave your comments as a contribution to the community._ //! //! This crate tries to model the very basics of the [bookkeeping](https://en.wikipedia.org/wiki/Bookkeeping) activity. //! //! It doesn't make assumptions regarding what metadata is attached to anything and allows you to define your own types for that. //! It also lets you determine how moves in an account are sorted, by providing your own sorting implementation that is based on your metadata. //! //! Imbalance is prevented as much as possible, first by the data structures and further entirely, by runtime. //! //! It attempts to provide an API that is nice to work with and also minimizes possible points of panic. //! //! It is oblivious to the concept of a [currency](https://en.wikipedia.org/wiki/Currency). //! Therefore, there are no decimal places, minor and major units. //! There is only the concept of a [Unit], as in [unit of measurement](https://en.wikipedia.org/wiki/Unit_of_measurement), which the user may associate with some currency implementation via its metadata. //! //! The most obvious todo items are: //! - Grouping of moves to represent transactions. //! - Editing/removing items other than metadata. //! - Caching of balance calculations. mod account; mod balance; mod book; mod index; mod metadata; mod move_; mod sum; mod unit; pub use account::Account; pub use balance::Balance; pub use book::Book; pub use metadata::Metadata; pub use move_::Move; pub use sum::Sum; pub use unit::Unit; // TODO do not use nightly features