~ireas/merge-rs

Create workspace for merge and merge_derive

This patch adds a workspace section to Cargo.toml to add merge_derive to
the current workspace.  This means that cargo fmt and cargo clippy
should now also check the derive crate when invoked from the top-level
directory with the default options.
Add homepage, documentation, readme to Cargo.toml

For better crate page on crates.io, this patch adds links to the
homepage and the documentation to Cargo.toml and tells crates.io to
display the readme.
Fix formatting for merge_derive
Add compile test for an invalid default strategy
Update derive-u8 compile test

We no longer implement Merge for Option, so we now have two error
messages instead of one.
Update change logs for recent changes

This patch adds the recent changes to the Option<T> handling, the new
merge strategies and the default strategy for structs to the change
logs.
Update documentation for recent changes

This patch updates the documentation in the readme and in lib.rs for the
recent changes that changed the handling of Option, added strategies for
hash maps and added the option to set a default strategy for a struct.
Add a default derive

This is somewhat hard to use because there's no way to know whether the
default should apply to the current item or not. Currently, to use the
old behavior, you need to explicitly say `merge(strategy =
Merge::merge)`. Otherwise, it will try to use the default and cause a
compile error:

```rust
error[E0308]: mismatched types
   --> tests/derive.rs:552:21
    |
552 |     #[derive(Debug, Merge, PartialEq)]
    |                     ^^^^^ expected enum `std::option::Option`, found struct `test_default_strategy::N`
    |
    = note: expected mutable reference `&mut std::option::Option<_>`
               found mutable reference `&mut test_default_strategy::N`
    = note: this error originates in a derive macro (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0308]: mismatched types
   --> tests/derive.rs:552:21
    |
552 |     #[derive(Debug, Merge, PartialEq)]
    |                     ^^^^^
    |                     |
    |                     expected enum `std::option::Option`, found struct `test_default_strategy::N`
    |                     help: try using a variant of the expected enum: `Some(Merge)`
    |
    = note: expected enum `std::option::Option<_>`
             found struct `test_default_strategy::N`
    = note: this error originates in a derive macro (in Nightly builds, run with -Z macro-backtrace for more info)
```

I'm open to suggestions on how to make this easier to use/give better
error messages.
Add `merge::hashmap` strategies for HashMap

- `overwrite` to give precedence to the left
- `ignore` to give precedence to the right
- `recurse` to recursively merge
Add `option::recurse`

- Remove `impl Merge for Option` now that it's no longer ambiguous
- Add `option::overwrite_none` with the previous behavior
- Add `option::recurse` with the new behavior
- Update tests and examples
Extend mailing list and git-send-email information
Update readme with instructions for submitting patches
Allow unsigned commits for builds@sr.ht

This patch adds a fallback check to the archlinux.yml build script to
allow unsigned commits if the user email is set to builds@sr.ht.  This
is the case for builds triggered by patches sent to the mailing list.
Release merge v0.1.0 and merge_derive v0.1.0

Initial release providing the Merge trait, some merge strategies in the
bool, num, ord and vec modules and a derive macro for the Merge trait.
Fix license identifiers
Fix formatting in examples/args.rs and src/lib.rs
Add contact information to readme

This patch adds contact information, namely the public-inbox mailing
list, to the readme.
Add documentation for merge and merge_derive

This patch adds doc comments for the merge and merge_derive crates.
Add args/config/env example

This patch adds the args.rs example file that demonstrates how to merge
arguments from structopt, from a configuration file parsed with toml and
from the environment variables parsed with envy.
Remove unnecessary trait requirements

Previously, the right argument for a merge strategy was a reference, so
we had to make sure that it implements copy so that we can assign it to
left.  But as we now take ownership of the argument, we no longer need
the Copy requirement for the generic merge strategies.
Fix formatting error in merge_derive/src/lib.rs
Next