Age | Commit message (Collapse) | Author |
|
This had open-coded copies of the impl for Value. Replace them with
calls to the impl for Value. This reduces duplication. It would
allow us to change the impl for Value.
Use a macro for the many very-similar functions.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|
|
Fix uppercase lowercase isses
|
|
|
|
|
|
|
|
* Attempt to convert between integer types using `TryInto`-based
conversions rather than blanket failing for some source and
destination types.
* Use `into_uint` instead of `into_int` in `Value` Deserialize
implementations for unsigned integer types. Previously, we were
converting from signed types to unsigned types using `as`, which can
lead to surprise integer values conversions (#93).
Fixes #352 and #93
|
|
|
|
|
|
|
|
|
|
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|
|
All our backend crates do not support integers smaller than i64, so
there's no point in supporting them either.
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|
|
This also enables support for 128 bit integers.
Nothing is tested, though.
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|
|
|
|
|
|
|
|
Reported from nightly clippy, this borrowing of a reference is
uneccessary.
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|
|
This patch sorts the imports:
1. std imports
2. external crate imports
3. own module imports
In three blocks, each alphabetically (with is also enforced by rustfmt).
As well as it prefixes the imports of own modules with crate::
This is just a quality-of-life patch :-)
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|
|
And remove the dead code bit.
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|
|
|
|
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|
|
|
|
Allow arbitrary types of map keys
|
|
|
|
Of particular interest are maps that have numbers or enums as keys.
Closes #74.
|
|
While using this library, I end up having lifetime issues with
`Config::get`. I've seen that current implementation forces the calleer
to match `key` lifetime to the output of the function.
My use case is, under some circumstances, return a suffixed version of
the config key. Something similar to:
```
if some_condition == true {
let key_name = format!("{}_suffix", key);
self.config.get(&key_name)
} else {
self.config.get(key)
}
```
This code is noy compiling for me due to conflicting lifetimes. To avoid
this, I've started looking to the code and I've found that `key` needed
this lifetime because of `ValueWithKey`. The purpouse of this struct
seems to be add more information to the errors that are returned to the
user.
To mitigate this lifetime coupling I've:
- Mapped the error on `Config::get` to include the originating key of
the current error
- Remove all the code related with `ValueWithKey`
|
|
Related to #83, but doesn't solve that specific problem :-(. That
specific error message ("missing field") comes from somewhere else than
this library.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|