Skip to content

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

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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