Mark output-only pub structs non_exhaustive #191
No reviewers
Labels
No labels
Area/ci
Area/cli
Area/client
Area/client-core
Area/daemon
Area/deps
Area/docs
Area/grid
Area/manual
Area/nix
Area/protocol
Area/pty
Area/render
Area/shaping
Area/skills
Area/transport
Area/vt
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Performance
Kind/Security
Kind/Testing
perf-regression-accepted
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Blocked
Status
Need More Info
Status
Upstream
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
felis-terminal/felis!191
Loading…
Reference in a new issue
No description provided.
Delete branch "api/output-structs"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Pre-publish refactor for #160:
#[non_exhaustive]on 52 output-only pub structs, so adding a field to one later is not a semver-major change.The structs covered are the ones only ever handed out: decoded rows, search hits, mode snapshots, dial results, probes, captures, and the json_v1 DTO structs. The
felis_json: 1contract already allows those DTOs to gain optional fields.Some structs stay exhaustive:
.., which includes the sibling repos (felis-tui, felis-reel, spoor, …). They take new fields as 0.x minor bumps.AttributesJson,SizingJson,AttrRunJsonandSizedCellJson, because the grid proptests build them.Diagnostic, because the publicConfigDiagnostics::pushtakes it as an argument.Enums are deliberately left exhaustive. In 0.x, a new variant is a cheap 0.(x+1) bump, and that keeps every in-workspace
matchchecked by the compiler. With a#[non_exhaustive]enum, a crate could be built against a newer protocol minor, and then every_arm would need designed handling for unknown variants.just checkandjust check-windowspass.7d3db06cbf6b5f12c89a