Currently, overriding gets pretty tricky, since reasonable-looking code like this:
#[derive(Deserialize)]
struct FooConfig {
#[serde(default = "FooConfig::default_port")]
port: u16,
}
impl FooConfig {
fn default_port() -> u16 {
9191
}
}
is subtly wrong, since the rolegroup's default port will override an explicitly specified role-level port. #282 made this somewhat worse, since it now triggers for all rolegroups (whereas previously it would only trigger for rolegroups that specified a config: field), but the issue was still there before.