-
-
Notifications
You must be signed in to change notification settings - Fork 228
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use oneOf for enums when possible #108
Conversation
Looks good to me, thanks for the PR! This implementation tracks enum MyEnum {
#[serde(rename = "Two")]
One,
Two,
} That feels like a silly thing for someone to do, but I guess there's not really any harm in accounting for it. |
Yes, that's right. And perhaps I should have left a comment to that effect. Agreed that it's a border-line hostile thing for someone to do, but it's also not that hard to handle with some grace. |
* Read #[validate(...)] attributes * Handle required flattened Option fields * Refactor out `add_schema_as_property` * Process validation attributes in newtype structs * Process validation attributes in tuple structs * Refactor out "local_id" for type definitions * Refactoring * Support inline regex * Allow setting validation attributes via #[schemars(...)] * Add some doc comments * Fix doc test * Emit compilation errors for duplicate validation attributes * Fix indexmap tests for rust 1.37 * upgrade diem dep (#1) * Update changelog and docs * Add newline to attributes docs * v0.8.4 * Allow empty #[validate] attributes. Fixes GREsau#109 * v0.8.5 * Use oneOf for enums when possible (GREsau#108) * v0.8.6 * Correct latest changelog entry * update diem dep * Implement JsonSchema on EnumSet type * update diem dep * Upgrade move deps (#3) * [deps] Upgrade move types dep. * Update examples after 0a1200b * Allow non-Serialize default values. Default values that don't implement Serialize are now ignored, rather than causing a compile error. This is done by simulating specialization using a technique copied from Rocket: https://github.com/SergioBenitez/Rocket/blob/5ebefa97c992c37bdc476299304a339d429a43fc/core/lib/src/sentinel.rs#L391-L445 Fixes GREsau#115 * v0.8.7 * update diem deps * Add example for optional dependency in readme Based on https://github.com/GREsau/schemars/pull/118/files * Add support for rust_decimal and bigdecimal (GREsau#101) * Document new optional dependencies * Internally tagged enums don't honor deny_unknown_fields as precisely as they might. flatten doesn't act quite as intended with regard to additional_properties * v0.8.8 * update diem deps to latest * update diem deps * Update dep * update diem deps * Update rust toolchain and dep * update diem dep * Update diem dep * [crypto] Update dependency crypto to use starcoinorg/starcoin-crypto repo (#5) * [crypto] Update dependency crypto to use starcoinorg/starcoin-crypto repo. * [deps] Update move-core-types to starcoinorg/move * Remove diem types Co-authored-by: Graham Esau <gesau@hotmail.co.uk> Co-authored-by: lerencao <funfriendcjf@gmail.com> Co-authored-by: Graham Esau <graham.esau@vonage.com> Co-authored-by: Adam Leventhal <adam.leventhal@gmail.com> Co-authored-by: Matt Campbell <mattcampbell@pobox.com> Co-authored-by: jolestar <jolestar@gmail.com> Co-authored-by: timando <github@timando.net> Co-authored-by: Adam H. Leventhal <ahl@oxide.computer>
Fixes #98
I did some minor clean up to the test infra to make the output easier to understand