# nshare
[![Discord][dci]][dcl] [![Crates.io][ci]][cl] ![MIT/Apache][li] [![docs.rs][di]][dl] ![LoC][lo] ![ci][bci]
[ci]: https://img.shields.io/crates/v/nshare.svg
[cl]: https://crates.io/crates/nshare/
[li]: https://img.shields.io/crates/l/specs.svg?maxAge=2592000
[di]: https://docs.rs/nshare/badge.svg
[dl]: https://docs.rs/nshare/
[lo]: https://tokei.rs/b1/github/rust-cv/nshare?category=code
[dci]: https://img.shields.io/discord/550706294311485440.svg?logo=discord&colorB=7289DA
[dcl]: https://discord.gg/d32jaam
[bci]: https://github.com/rust-cv/nshare/workflows/ci/badge.svg
Provides traits that allow conversion between n-dimensional types in different Rust crates
**NOTE**: By default, this crate includes conversions for all supported crates. If you want to limit compilation, use `no-default-features = true` enable the corresponding feature for each dependency:
* `nalgebra`
* `ndarray`
* `image`
When two crate features are enabled, any available conversions between the two crates are turned on.
## Limitations
Right now this crate really only provides conversions to owned and borrowed ndarray types. Some limitations exist with `nalgebra`, as it only utilizes positive strides, while `ndarray` supports negative strides as well. The `image` crate has no concept of strides. Due to this, the `ndarray` crate is the most flexible, and is ideal for interoperability between these various crates.
`nalgebra` currently does not offer a solution to directly pass it an owned vector from `ndarray`, so `into` conversions do perform a copy. It is recommended to create the owned copy in `nalgebra` and then borrow a mutable array view of it using ndarray. You can then populate it accordingly without any copies of the data.