Ben Kunkle
60d17cccd3
settings_ui: Move settings UI trait to file content ( #37337 )
...
Closes #ISSUE
Initially, the `SettingsUi` trait was tied to `Settings`, however, given
that the `Settings::FileContent` type (which may be the same as the type
that implements `Settings`) will be the type that more directly maps to
the JSON structure (and therefore have the documentation, correct field
names (or `serde` rename attributes), etc) it makes more sense to have
the deriving of `SettingsUi` occur on the `FileContent` type rather than
the `Settings` type.
In order for this to work a relatively important change had to be made
to the derive macro, that being that it now "unwraps" options into their
inner type, so a field with type `Option<Foo>` where `Foo: SettingsUi`
will treat the field as if it were just `Foo`, expecting there to be a
default set in `default.json`. This imposes some restrictions on what
`Settings::FileContent` can be as seen in 1e19398 where `FileContent`
itself can't be optional without manually implementing `SettingsUi`, as
well as introducing some risk that if the `FileContent` type has
`serde(default)`, the default value will override the default value from
`default.json` in the UI even though it may differ (but it should!).
A future PR should probably replace the other settings with `FileContent
= Option<T>` (all of which currently have `T == bool`) with wrapper
structs and have `KEY = None` so the further niceties
`derive(SettingsUi)` will provide such as path renaming, custom UI, auto
naming and doc comment extraction can be used.
Release Notes:
- N/A *or* Added/Fixed/Improved ...
2025-09-01 18:42:33 -04:00
..
2025-09-01 18:57:15 +00:00
2025-08-25 16:04:44 -06:00
2025-08-20 14:07:37 +02:00
2025-08-20 14:07:37 +02:00
2025-08-26 13:55:09 +00:00
2025-09-01 18:57:15 +00:00
2025-09-01 18:57:15 +00:00
2025-09-01 18:42:33 -04:00
2025-09-01 18:57:15 +00:00
2025-08-25 17:21:20 +00:00
2025-08-28 12:00:44 +00:00
2025-08-19 21:26:17 +02:00
2025-08-13 13:25:52 -06:00
2025-08-20 12:20:13 +02:00
2025-08-27 23:24:19 +00:00
2025-08-28 13:32:30 -06:00
2025-08-27 23:24:19 +00:00
2025-08-31 19:52:43 -04:00
2025-09-01 18:42:33 -04:00
2025-09-01 18:42:33 -04:00
2025-08-29 17:18:52 -07:00
2025-08-20 12:20:13 +02:00
2025-07-22 11:55:24 -04:00
2025-08-29 18:13:06 -04:00
2025-08-27 23:24:19 +00:00
2025-08-22 03:48:47 -04:00
2025-09-01 18:42:33 -04:00
2025-08-20 12:20:13 +02:00
2025-09-01 08:33:59 +00:00
2025-09-01 18:42:33 -04:00
2025-08-22 11:45:47 -04:00
2025-08-07 01:28:41 +00:00
2025-08-11 15:34:34 +02:00
2025-08-29 17:08:42 +03:00
2025-09-01 18:42:33 -04:00
2025-08-26 00:27:52 +00:00
2025-08-20 12:20:13 +02:00
2025-08-22 13:16:42 +00:00
2025-08-31 18:51:17 -04:00
2025-08-21 19:59:42 -04:00
2025-08-19 21:26:17 +02:00
2025-09-01 18:42:33 -04:00
2025-08-28 07:53:32 +00:00
2025-08-26 00:27:52 +00:00
2025-08-20 12:20:13 +02:00
2025-08-28 14:40:43 +00:00
2025-09-01 10:49:09 +02:00
2025-08-29 17:08:42 +03:00
2025-08-27 03:24:50 +08:00
2025-08-22 11:45:47 -04:00
2025-08-22 11:45:47 -04:00
2025-09-01 18:42:33 -04:00
2025-08-20 20:14:30 +02:00
2025-08-19 20:33:44 +00:00
2025-08-20 12:05:58 +02:00
2025-08-16 19:00:31 +00:00
2025-08-29 17:18:52 -07:00
2025-08-20 12:20:13 +02:00
2025-08-26 15:30:26 +02:00
2025-08-21 19:59:42 -04:00
2025-09-01 18:42:33 -04:00
2025-08-19 21:26:17 +02:00
2025-08-28 13:32:30 -06:00
2025-08-19 13:27:24 +00:00
2025-08-06 10:53:20 +02:00
2025-08-20 20:14:30 +02:00
2025-08-29 16:56:10 -04:00
2025-09-01 18:42:33 -04:00
2025-09-01 18:42:33 -04:00
2025-08-28 12:00:44 +00:00
2025-09-01 15:33:11 -04:00
2025-08-29 16:56:10 -04:00
2025-08-21 17:19:57 +00:00
2025-08-19 13:27:24 +00:00
2025-08-20 12:20:13 +02:00
2025-08-28 07:53:32 +00:00
2025-08-29 16:56:10 -04:00
2025-08-24 11:01:42 +00:00
2025-08-18 21:54:35 +00:00
2025-08-19 20:33:44 +00:00
2025-08-29 16:56:10 -04:00
2025-08-29 16:56:10 -04:00
2025-09-01 18:42:33 -04:00
2025-08-18 21:54:35 +00:00
2025-08-27 12:53:07 +00:00
2025-09-01 18:42:33 -04:00
2025-08-19 13:27:24 +00:00
2025-08-29 12:23:45 +00:00
2025-08-29 17:08:42 +03:00
2025-08-21 15:56:16 +02:00
2025-07-25 09:36:43 -04:00
2025-08-29 17:08:42 +03:00
2025-08-26 12:55:40 -03:00
2025-08-31 11:43:24 +03:00
2025-08-20 12:20:13 +02:00
2025-08-28 12:00:44 +00:00
2025-08-24 09:59:32 +03:00
2025-08-19 20:33:44 +00:00
2025-08-19 13:27:24 +00:00
2025-08-06 10:44:15 -04:00
2025-09-01 18:42:33 -04:00
2025-08-28 12:00:44 +00:00
2025-08-28 12:00:44 +00:00
2025-09-01 18:42:33 -04:00
2025-08-20 12:20:13 +02:00
2025-08-29 17:18:52 -07:00
2025-08-20 12:20:13 +02:00
2025-08-19 21:26:17 +02:00
2025-08-29 17:18:52 -07:00
2025-09-01 18:42:33 -04:00
2025-08-29 14:07:27 -03:00
2025-08-20 12:20:13 +02:00
2025-08-28 14:40:43 +00:00
2025-09-01 18:42:33 -04:00
2025-08-19 13:27:24 +00:00
2025-08-29 17:18:52 -07:00
2025-08-29 17:08:42 +03:00
2025-09-01 18:42:33 -04:00
2025-08-20 12:05:58 +02:00
2025-08-19 13:27:24 +00:00
2025-08-20 12:20:13 +02:00
2025-08-21 06:48:04 +00:00
2025-08-28 03:51:22 +00:00
2025-08-29 03:50:24 +00:00
2025-08-20 12:20:13 +02:00
2025-08-19 13:27:24 +00:00
2025-09-01 18:42:33 -04:00
2025-08-20 12:20:13 +02:00
2025-09-01 17:53:43 -04:00
2025-09-01 18:42:33 -04:00
2025-08-19 21:26:17 +02:00
2025-08-19 21:26:17 +02:00
2025-08-19 13:27:24 +00:00
2025-08-26 00:27:52 +00:00
2025-08-20 12:20:13 +02:00
2025-08-19 20:33:44 +00:00
2025-08-18 21:54:35 +00:00
2025-08-19 21:26:17 +02:00
2025-08-29 16:17:22 -04:00
2025-08-19 21:26:17 +02:00
2025-08-19 20:33:44 +00:00
2025-08-21 19:59:42 -04:00
2025-08-28 21:07:02 +00:00
2025-08-28 14:40:43 +00:00
2025-08-20 14:35:59 +00:00
2025-08-19 21:26:17 +02:00
2025-08-15 15:37:52 -04:00
2025-09-01 18:42:33 -04:00
2025-09-01 11:21:55 +03:00
2025-08-19 21:26:17 +02:00
2025-09-01 18:42:33 -04:00
2025-08-20 12:20:13 +02:00
2025-08-08 15:34:36 -03:00
2025-09-01 18:42:33 -04:00
2025-08-21 09:37:45 +00:00
2025-08-28 08:40:43 +00:00
2025-08-20 12:20:13 +02:00
2025-07-30 23:03:53 +05:30
2025-08-28 13:32:30 -06:00
2025-08-15 13:54:24 +03:00
2025-09-01 18:42:33 -04:00
2025-08-29 16:56:10 -04:00
2025-08-25 14:28:11 -04:00
2025-08-20 12:20:13 +02:00
2025-08-19 20:33:44 +00:00
2025-09-01 18:42:33 -04:00
2025-09-01 18:42:33 -04:00
2025-08-26 21:08:45 +00:00
2025-09-01 08:33:59 +00:00
2025-08-26 16:59:12 -03:00
2025-08-31 07:23:21 +00:00
2025-08-20 12:20:13 +02:00
2025-08-20 12:20:13 +02:00
2025-08-29 16:56:10 -04:00