| cue export schema.cue |
| cmp stdout expect-stdout-cue |
| |
| -- frontmatter.toml -- |
| title = "Definitions" |
| description = "" |
| |
| -- text.md -- |
| In CUE, schemas are typically written as Definitions. |
| A definition is a field which identifier starts with |
| `#` or `_#`. |
| 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" |
| } |
| } |