exec cue export fold.cue
cmp stdout expect-stdout-cue

-- frontmatter.toml --
title = "Folding of Single-Field Structs"
description = ""

-- text.md --
In JSON, one defines nested values, one value at a time.
Another way to look at this is that a JSON configuration is a set of
path-value pairs.

In CUE one defines a set of paths to which to apply
a concrete value or constraint all at once.
Because of CUE's order independence, values get merged

This example shows some path-value pairs, as well as
a constraint that is applied to those to validate them.
<!--
This also gives a handy shorthand for writing structs with single
members.
-->

-- fold.cue --
// path-value pairs
outer: middle1: inner: 3
outer: middle2: inner: 7

// collection-constraint pair
outer: [string]: inner: int

-- expect-stdout-cue --
{
    "outer": {
        "middle1": {
            "inner": 3
        },
        "middle2": {
            "inner": 7
        }
    }
}
