#generic #node #taxonomy

kodiak-taxonomy

A library to manage generic taxonomies supporting unique features

2 unstable releases

0.2.0 Nov 15, 2022
0.1.0 Nov 6, 2022

#1581 in Data structures

27 downloads per month

MIT/Apache

140KB
2K SLoC

kodiak-taxonomy

GitHub Top Language Static unsafe crates.io License GitHub License

GitHub Latest Release GitHub Commits

Code Coverage GitHub Build Status Static docs coverage docs.rs Libraries.io Dep Status

GitHub Security Schedule GitHub Security Push

GitHub Open Issues GitHub Closed Issues

crates.io Latest crates.io Recent

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 taxonomy[^Wikipedia] 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:


Impressions

todo: show two examples of taxonomies supported by kodiak-taxonomy

Provide additional examples in EXAMPLES.md and link to it.

TL;DR

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)

Known issues / limitations

  • 🏗️ Version 0.1.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 and documentation has room for improvement.
  • Rust API Guidelines have not yet been considered.
  • 🐧 Version 0.1.x is developed and tested on Linux only.

Roadmap and future considerations

Version 0.7.0 (planned)

  • Add performance consideration of public functions to the documentation.

Version 0.6.0 (planned)

  • Implement Iterator trait.
  • Implement Display trait for Node.

Version 0.5.0 (planned)

  • Implement Serde's Serialize and Deserialize.

Version 0.4.0 (planned)

  • Add support for arbitrary metadata / attributes at the Node and Edge level.

Version 0.3.0 (in progress)

  • 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.

Version 0.2.0 (delivered)

  • 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)]

Version 0.1.0 (delivered)

  • Initial release.

Additional resources

Contributing

See CONTRIBUTING for more details.

Appendix

Cargo Geiger Safety Report


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    

License

Licensed under either of

at your option.

No runtime deps