Commit aadd8c8
authored
feat: Add support for float and boolean hash keys (#650)
The `unreachable!` code at
https://github.com/rust-cli/config-rs/blob/main/src/file/format/yaml.rs#L53
is reachable, and this PR fixes it for two simple types: reals and
booleans.
Prior to this change you'd get this error trying to parse the following:
```
thread '...' panicked at .../config-0.15.9/src/file/format/yaml.rs:53:26:
internal error: entered unreachable code
```
The problematic case for me turned out to be float keys:
```yaml
inner_float:
0.1: "float 0.1"
0.2: "float 0.2"
```
The change in this PR follows the same pattern as already exists for
Strings and Integers - just parse them as strings and leave it up to the
user to work out what to do with that.
Personally I only need the Real support, so happy to remove the Boolean
case if that's at all contentious.
I decided not to look into whether you can craft a hash with the other
Yaml types (below) because it's such an odd use case it didn't seam
realistic! That said, #547
suggests that just treating Hash as string would have avoided that
users' problem. However, converting from these types back into the exact
string format they were parsed in would be difficult, so it's not clear
what the right implementation would be. So getting the simpler case
(reals, booleans) done feels like the right sized change to make.
```
Array(Array),
Hash(Hash),
Alias(usize),
Null,
BadValue,
```
Let me know what you think! And thanks for maintaining this useful crate :)2 files changed
+25
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
| 54 | + | |
54 | 55 | | |
55 | 56 | | |
56 | 57 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
382 | 382 | | |
383 | 383 | | |
384 | 384 | | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
0 commit comments