easy_node
===
Smart pointer for graph nodes.
*The author of this crate is not good at English.*
*Forgive me if the document is hard to read.*
## What is this?
This crate provides some smart pointers optimized for
managing graph data structures.
* `Nr` - like `Rc`
* `Nw` - like `Weak`.
These smart pointers behavior is similar to `Rc` and `Weak`.
However, These smart pointer comparison is location based.
## Other options
[`by_address`] is a great crate with similar purpose.
It supports location based comparison too. But unlike this crate,
it can target any type that implements `Deref` trait. And therefore,
`Weak` that does not implement `Deref` need other [support][issue].
On the other hand, this crate specializes on `Rc` and `Weak`. Instead,
we discard other smart pointers like `Box`. This is because this crate
assumes only nodes in graph or network.
[`by_address`]: https://crates.io/crates/by_address
[issue]: https://github.com/mbrubeck/by_address/issues/3
## Unsize handling
As of 2024, to support unsize conversions with smart pointers, unstable
feature `CoerceUnsized` is required. So, `Rc` to `Rc`
conversion is supported, but `Nr` to `Nr` is not.
As workaround, we provide inter-conversions between `Nr` and `Rc`, and
between `Nw` and `Weak`. `Nr` and `Nw` functions `as_base`, `from_base`,
and `base` are them.
## What's New?
v0.3.2
* Edit documentation.
v0.3.1
* Add `prelude` module.
* Edit documentation.
v0.3.0
* Obsolete `upgrade_ref` method (unsafe misusing...).
* Obsolete `NrCell` and `NwCell` (not essential...).
* Add `base`, `as_base`, `from_base` method.