warmy 0.13.0

Hot-reloading loadable and reloadable resources
Documentation
# 0.13

> Sun Sep 1st 2019

## Minor changes

  - Add the universal implementation for the [ron]https://crates.io/crates/ron crate. It is
    accessible via the `Ron` type.

# 0.12

> Sat Jun 8th 2019

  - Switch from [tempdir]https://crates.io/crates/tempdir to
    [tempfile]https://crates.io/crates/tempdir in `dev-dependencies`.
  - Add the universal implementation for the [toml]https://crates.io/crates/toml crate. It is
    accessible via the `Toml` type.

## 0.11.3

> Thu Apr 25th 2019

  - Update the README with [cargo-sync-readme]https://crates.io/crates/cargo-sync-readme.

## 0.11.2

> Wed Apr 24th 2019

  - Add the `"arc"` feature gate, allowing to replace the internal representation of resources by
    `Arc`-ed objects in order to help sending resources accross threads. This is a temporary patch
    until a better solution shows up.

## 0.11.1

> Thu Jan 24th 2019

  - Add universal JSON support (via **serde**).

# 0.11

> Saturday, 27th of October 2018

  - Change the key system. Keys are now used as type variables in the `Load` trait in order to allow
    for custom keys to be more easily used across an entire `Store` use through the code base. This
    is also the first premise of a bigger change that will arrive in `0.12` or `0.13`: resource
    sources and event collectors customization.
  - Remove `FSKey`, `LogicalKey`, `DepKey`.
  - Add the convenient `SimpleKey` type.
  - Enhance the documentation.

# 0.10

> Sunday, 30th of September 2018

  - Replace and remove the `std::error::Error` constraint by `Display` in the `Error` associated
    type of the `Load` trait.
  - Enhance the implementation of the `Display` trait for several types.
  - Implement `Display` for the `DepKey` type.

# 0.9

> Tuesday, 25th of September 2018

  - Add the resource discovery mechanism.
  - Change some internal code about debounced events. That has the effect to change the interface of
    the debounce duration’s type, going from *milliseconds* as `u64` to a more common and pleasant
    type to work with: `std::time::Duration`.

# 0.8

> Monday, 13th of August 2018

  - Fix a typo in the `RootDoesNotExist` error type.

## 0.7.3

> Tuesday, 24th of July 2018

  - Overall documentation enhancement.
  - Add the `Inspect` trait. This trait is there to help people make libraries using **warmy** more
    composable.

## 0.7.2

> Monday, April, 30th 2018

  - Fix a typo in the README.md. (am I drunk or what?)

## 0.7.1

> Monday, April, 30th 2018

  - Fix a typo in the README.md.

# 0.7

> Monday, April, 30th 2018

  - Refactor and reworked all the key system. The new system implements a
    [VFS]https://en.wikipedia.org/wiki/Virtual_file_system and is easier to use – among important
    changes: the functional dependency between a key and the resource it points to was removed and is
    now injected by the implementation.
  - Add a `rustfmt.toml` file to the project. This is an experiment only to see whether it makes it
    easier to collaborate.
  - Add context passing. That enables situations where a mutable reference can be passed to a
    loading or even reloading resource, allowing for several interesting situations (loading /
    reloading statistics, tuning, etc.).
  - Add loading and reloading methods. Those are tag-only type variables that can be used to
    implement `Load` several times for a same type `T`, giving it the possibility to load or reload
    via several algorithms (JSON, YAML, custom, etc.).
  - Complete rewrite of the documentation. The documentation index (at the crate level) now contains
    a pretty detailed and as exhaustive as possible about **warmy** and everything that can be done
    with it. (hint: if you’re a developer and state that something is missing, please open an issue or
    even better, please open a merge request if you have spare time!).

> A gigantic **thank you** to [@icefoxen]https://github.com/icefoxen for all their contributions
> to the crate, especially the context passing feature (it was their idea!) and all the testing they
> have done – `warmy` was tested with success with [ggez]https://crates.io/crates/ggez; how cool
> is that!

## 0.6.1

> Saturday, April, 7th 2018

  - Add functions to build both `PathKey` and `LogicalKey`.

# 0.6.0

  - The `update_await_time_ms` `StoreOpt` value is now defaulted to **50ms**. You must think of it as:
    “If a resource gets written, if nothing happens for the next `update_await_time_ms`, reload it.”
    You are free to change that value and experiment with it. However, keep in mind that a too much
    high value would result in latency, and that a too much low value could miss give you an incorrect
    behavior. To understand that, think of a copy of a large resource (a texture for instance). It’s
    very likely that the resource will be stream-copied to the file system, generating several write
    file system event that `warmy` will see. If the time between each write is higher than the value
    of `update_await_time_ms`, the reload code will be ran while the resource is still being
    stream-copied! Thus, **50ms** seems pretty fair (it’s actually pretty high, but you never know).
  - Interface change: you now handle a `Store` around, but the `Load` code handles a
    `Storage` instead of a `Store`. This is needed to enable partial borrowing
    optimizations.
  - Fix a bug for long-lasting reloading resources and OS bytes chunks streaming.
  - Complete rewrite of internals via partial borrowing and thus, way less allocations.

## 0.5.2

  - Fix premature dependency drop when reloading a resource.

## 0.5.1

  - In `Load::reload`, change the `_: &Self` into `&self`. Sorry for that. :D

# 0.5.0

  - Fix upper-bounds for notify dependency.
  - Introduce *logical resources*. Those are resources that don’t *directly* map to a path in the file
    system, yet require hot-reloading and caching.
  - Because of *logical resources*, the `Load` trait also get reviewed: the `from_fs` function now
    becomes `load` and doesn’t take a `Path`-ref-like value anymore, but depends on the kind of key
    your type selects via the associated `Key` type.
  - Various fixes for dependencies.
  - Documentation enhancement and update.

# 0.4.0

  - Disable people from performing *path sharing*. It is now forbidden to have two separate
    (different types) resources pointing to the same path. You’ll get errors when trying to get the
    second resource.

# 0.3.0

  - Fix paths handled to the `from_fs` method. The paths are now correctly prefixed by the
    canonicalized root.

# 0.2.0

  - Overall enhancement of the documentation.
  - New error system based on `::std::error::Error` and custom error.
  - Various `notify` fixes.

# 0.1.0

  - Initial revision.