settings-schema-derive

Crates.iosettings-schema-derive
lib.rssettings-schema-derive
version0.2.0
sourcesrc
created_at2022-03-21 15:09:37.724011
updated_at2023-04-02 20:50:33.578083
descriptionproc-macro crate for settings-schema
homepage
repositoryhttps://github.com/zarik5/settings-schema-rs
max_upload_size
id554148
size26,049
Riccardo Zaglia (zarik5)

documentation

README

settings-schema-rs

Derive macro for generating automatically a schema from Rust structures and enums. The schema can be serialized to JSON and/or used to generate a GUI.

Example

Node types

  • Section (from struct). Contains fields that can be marked as advanced setting. Unnamed fields are not supported.
  • Choice (from enum). Up to one unnamed field per variant is supported. Can be marked with the gui attribute with "drop_down" or "button_group".
  • Optional (from Option). None is used when the content is "default" or calculated.
  • Switch. Can be Enabled (with data) or Disabled. The content can be set to advanced.
  • Boolean (from bool).
  • Number (from u/i 8/32/64/size and f32/f64). Attribute gui can be textbox or slider (with sub attribtes min, max, step and logarithmic).
  • Text (from String).
  • Array (from [X; N]).
  • Vector (from Vec<X>).
  • Dictionary (from Vec<(String, X)>).

Attributes like gui can be applied to fields with compound types like Vec<Switch<u64>>.

Custom types with generic type arguments are not supported.

New *Default structures are automatically created to store default values. This is done to allow specifying the default data for all variants in a given enum.

Commit count: 25

cargo fmt