Get things organized with this powerful, yet easy to use taxonomy.
This library crate is a building block of the Kodiak project, thus the naming of the crate.
Although, Kodiak has some quite specific requirements for a taxonomy, kodiak-taxonomy
is kept generic,
provides value on its own and might be of interest for other projects as well.
A taxonomy1 is a classification scheme to organize things according to their types. Often, taxonomies offer a strictly hierarchical organization providing a tree-like structure. However, in practice, such taxonomies limit our ability to model our complex reality.
When looking for a powerful taxonomy which overcomes such limitations, kodiak-taxonomy
might be a good fit
for you. So, feel free to use it. If you consider using kodiak-taxonomy
in your project but are missing functionality
or have any other concerns, don't hesitate to file an issue on GitHub.
We are looking forward to your feedback.
You may be looking for:
todo: show two examples of taxonomies supported by kodiak-taxonomy
Provide additional examples in EXAMPLES.md and link to it.
Kodiak's specific requirements regarding its taxonomy:
- An element can have more than one superordinate element
- The top of the taxonomy allows multiple elements, i.e. users are free to create multiple root-nodes
- Elements might be complemented by arbitrary metadata (still todo: not implemented yet)
- Edges (a tuple of a super and its sub element) might be complemented with arbitrary attributes (still todo: not implemented yet)
- ποΈ Version 0.2.0 does not yet power other projects, so API has not yet proven it's power in practice.
- π§ Code is fully covered by unit tests, however, some integration tests are still missing.
- Documentation has still some room for improvement.
- π§ Version 0.2.x is developed and tested on Linux only.
- Add performance consideration of public functions to the documentation.
- Implement Iterator trait.
- Implement Display trait for Node.
- Implement Serde's Serialize and Deserialize.
- Add support for arbitrary metadata / attributes at the Node and Edge level.
- Re-thing the API: implement
Taxonomy
as a thin wrapper around std::collections::HashMap and get rid of TaxonomyError (see CHECKLIST_RUST_API_CONFORMANCE) - Improve documentation (see CHECKLIST_RUST_API_CONFORMANCE)
- Publish Software Bill of Material (SBOM) together with any future release.
- Use LLVM engine of Tarpaulin to check code coverage.
- Review and follow Rust API Guidelines.
- Improve documentation: e.g. comply to C-LINK from Rust API Guidelines.
- Full code coverage with tests, measured by tarpaulin and added as a badge to GitHub project
- Switch to
#![forbid(unsafe_code)]
- Initial release.
- Homepage polarlabs: polarlabs.io
- Crate: crates.io/kodiak-taxonomy
- API documentation: docs.rs/kodiak-taxonomy
See CONTRIBUTING for more details.
Metric output format: x/y
x = unsafe code used by the build
y = total unsafe code found in the crate
Symbols:
π = No `unsafe` usage found, declares #![forbid(unsafe_code)]
β = No `unsafe` usage found, missing #![forbid(unsafe_code)]
β’οΈ = `unsafe` usage found
Functions Expressions Impls Traits Methods Dependency
0/0 0/0 0/0 0/0 0/0 π kodiak-taxonomy 0.2.0
0/0 0/0 0/0 0/0 0/0
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or https://opensource.org/licenses/Apache-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.