| cue export schema.cue |
| cmp stdout expect-stdout-cue |
| |
| -- frontmatter.toml -- |
| title = "Definitions" |
| description = "" |
| |
| -- text.md -- |
| In CUE, schema are typically written as Definitions, |
| using a `::` instead of `:`. |
| This tells CUE that they are to be used for validation and should |
| not be output as data; it is okay for them to remain unspecified. |
| |
| A definition also tells CUE the full set of allowed fields. |
| In other words, definitions define "closed" structs. |
| Including a `...` in struct keeps it open. |
| |
| -- schema.cue -- |
| Conn :: { |
| address: string |
| port: int |
| protocol: string |
| // ... // uncomment this to allow any field |
| } |
| |
| lossy: Conn & { |
| address: "1.2.3.4" |
| port: 8888 |
| protocol: "udp" |
| // foo: 2 // uncomment this to get an error |
| } |
| |
| -- expect-stdout-cue -- |
| { |
| "lossy": { |
| "address": "1.2.3.4", |
| "port": 8888, |
| "protocol": "udp" |
| } |
| } |