8000 Mark public types non_exhaustive so that later additions do not break users again by dominion525 · Pull Request #158 · dominion525/jetdb · GitHub
[go: up one dir, main page]

Skip to content

Mark public types non_exhaustive so that later additions do not break users again - #158

Merged
dominion525 merged 1 commit into
mainfrom
api/non-exhaustive
Oct 26, 2026
Merged

dominion525 merged 1 commit into
mainfrom
api/non-exhaustive

Conversation

@dominion525
Copy link
Copy Markdown
Owner

Summary

  • No public type of jetdb had #[non_exhaustive], so every variant or field added after 0.4.0 would break users again. 0.4.0 already breaks the API, so marking them now costs the least.
  • 17 enums are marked, among them FileError, FormatError, Value, ColumnType, ObjectType, BlobValue, MacroStatement and VbaModuleType, and 23 structs whose fields are all public, such as CsvOptions, JetFormat, TableDef, MacroAction and the form and property structs.
  • Left out: closed types (IndexColumnOrder, FormObjectType, TextEncoding, RowPosition, and pairs such as RelationshipColumn), and CatalogEntry, ColumnDef, IndexDef, Relationship and FormEntry, which the tests of the CLI and jetdb-wasm build with struct literals; a field added to them breaks only code that builds them that way.
  • CsvOptions is now built from Default in jetdb export, jetdb-wasm and the example in the crate documentation and docs/lib (English and Japanese). The CLI and jetdb-wasm get wildcard arms on these enums.
  • The output of prop, export and export with every option for the 2,105 tables of the test data, 6,436 files, is the same before and after, with the same exit codes and stderr.

🤖 Generated with Claude Code

… users again

- Add #[non_exhaustive] to the error enums, the enums of values read from the file formats, BinaryFormat, and the structs with all-public fields read from the formats, such as CsvOptions, JetFormat, MacroAction and TableDef
- Leave out closed types, such as IndexColumnOrder, TextEncoding and RowPosition, and the types the tests of the CLI and jetdb-wasm build with struct literals: CatalogEntry, ColumnDef, IndexDef, Relationship and FormEntry
- Build CsvOptions from Default in jetdb export, jetdb-wasm and the example of the documentation, since a struct literal of it no longer compiles outside the crate
- Add wildcard arms to the matches of the CLI and jetdb-wasm on these enums, keeping the output of the existing variants

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

Coverage

For 97bd5ba.

Filename                       Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
jetdb-cli/src/export.rs            118                11    90.68%           6                 0   100.00%          65                 6    90.77%           0                 0         -
jetdb-cli/src/form.rs              239                19    92.05%          24                 5    79.17%         151                 6    96.03%           0                 0         -
jetdb-cli/src/macro_cmd.rs         117                10    91.45%           7                 2    71.43%          62                 4    93.55%           0                 0         -
jetdb-cli/src/main.rs              911                40    95.61%          82                 4    95.12%         579                29    94.99%           0                 0         -
jetdb-cli/src/prop.rs              332                20    93.98%          38                 2    94.74%         194                 9    95.36%           0                 0         -
jetdb-cli/src/query.rs              65                 3    95.38%           5                 0   100.00%          32                 0   100.00%           0                 0         -
jetdb-cli/src/vba.rs                59                 3    94.92%           5                 0   100.00%          28                 0   100.00%           0                 0         -
jetdb-wasm/src/lib.rs             3917               103    97.37%         257                 4    98.44%        2064                29    98.59%           0                 0         -
jetdb/src/catalog.rs               509                14    97.25%          46                 0   100.00%         299                 3    99.00%           0                 0         -
jetdb/src/complex.rs               924                32    96.54%          73                 0   100.00%         605                15    97.52%           0                 0         -
jetdb/src/crypto.rs               2300               112    95.13%         127                10    92.13%        1315                60    95.44%           0                 0         -
jetdb/src/csv.rs                   857                24    97.20%          72                 0   100.00%         486                 6    98.77%           0                 0         -
jetdb/src/data.rs                 4662                91    98.05%         293                 3    98.98%        2647                51    98.07%           0                 0         -
jetdb/src/ddl/access.rs             70                 0   100.00%           7                 0   100.00%          46                 0   100.00%           0                 0         -
jetdb/src/ddl/mod.rs              2771                 8    99.71%         208                 2    99.04%        1501                 6    99.60%           0                 0         -
jetdb/src/ddl/mysql.rs              70                 0   100.00%           7                 0   100.00%          46                 0   100.00%           0                 0         -
jetdb/src/ddl/postgres.rs           71                 0   100.00%           7                 0   100.00%          46                 0   100.00%           0                 0         -
jetdb/src/ddl/sqlite.rs             69                 0   100.00%           7                 0   100.00%          48                 0   100.00%           0                 0         -
jetdb/src/encoding.rs              284                 0   100.00%          30                 0   100.00%         153                 0   100.00%           0                 0         -
jetdb/src/file.rs                 1915                65    96.61%         117                 0   100.00%         983                18    98.17%           0                 0         -
jetdb/src/form.rs                 3123               128    95.90%         230                10    95.65%        1684                48    97.15%           0                 0         -
jetdb/src/form2000.rs              762                21    97.24%          56                 1    98.21%         402                 4    99.00%           0                 0         -
jetdb/src/format.rs                616                 2    99.68%          45                 0   100.00%         388                 2    99.48%           0                 0         -
jetdb/src/lib.rs                     3                 0   100.00%           1                 0   100.00%           3                 0   100.00%           0                 0         -
jetdb/src/macro_action.rs          299                19    93.65%          27                 3    88.89%         165                24    85.45%           0                 0         -
jetdb/src/macro_def.rs            2440                88    96.39%         196                 9    95.41%        1596                36    97.74%           0                 0         -
jetdb/src/macro_text.rs            804                24    97.01%          54                 2    96.30%         451                20    95.57%           0                 0         -
jetdb/src/map.rs                   416                13    96.88%          27                 0   100.00%         221                 5    97.74%           0                 0         -
jetdb/src/money.rs                 281                 0   100.00%          26                 0   100.00%         186                 0   100.00%           0                 0         -
jetdb/src/prop.rs                 1375                18    98.69%          90                 0   100.00%         695                10    98.56%           0                 0         -
jetdb/src/query.rs                2514                62    97.53%         200                 1    99.50%        1550                18    98.84%           0                 0         -
jetdb/src/relationship.rs          249                26    89.56%          22                 0   100.00%         177                10    94.35%           0                 0         -
jetdb/src/save_as_text.rs          574                27    95.30%          52                 3    94.23%         341                27    92.08%           0                 0         -
jetdb/src/storage.rs               764                32    95.81%          57                 0   100.00%         434                 6    98.62%           0                 0         -
jetdb/src/table.rs                1679                67    96.01%         109                 2    98.17%        1017                18    98.23%           0                 0         -
jetdb/src/timestamp.rs             405                 0   100.00%          44                 0   100.00%         235                 0   100.00%           0                 0         -
jetdb/src/vba.rs                   949                57    93.99%          82                11    86.59%         540                21    96.11%           0                 0         -
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                            37513              1139    96.96%        2736                74    97.30%       21435               491    97.71%           0                 0         -

@dominion525
dominion525 merged commit 1050f53 into main Oct 26, 2026
11 checks passed
@dominion525
dominion525 deleted the api/non-exhaustive branch October 26, 2026 15:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

0