Skip to content

macOS: TOML with Table values produces error on output #194

@rqelibari

Description

@rqelibari

The Problem

Trying to output the data structure in TOML format (with -T option) produces an error on macOS High Sierra:

$ rq -tT 'id' < ./test.toml
 [ERROR] [rq] Encountered: values must be emitted before tables
 [ERROR] [rq] (Re-run with --trace or RUST_BACKTRACE=1 for a backtrace)

Investigations

Doing a web search with that error message led me to this source file of the toml crate project, that is responsible for serialising the data structure to a TOML file, that states:

Note that the TOML format has a restriction that if a table itself contains
tables, all keys with non-table values must be emitted first. This is
typically easy to ensure happens when you're defining a `struct` as you can
reorder the fields manually, but when working with maps (such as `BTreeMap`
or `HashMap`) this can lead to serialization errors. In those situations you
may use the `tables_last` function in this module [...]

And indeed, the error occurred only when there were tables to be serialised.

Solution

As stated in the serialisation source file, a solution is to make use of the tables_last function. I am currently figuring out, how I need to adapt the rq/src/value/toml.rs source file to do exactly that.

Any help is appreciated, especially as I have started learning Rust only a few days ago.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions