From: Ian Jackson Date: Tue, 10 Jan 2023 00:01:00 +0000 (+0000) Subject: Config inspection: make InspectableConfig impl dyn despatch X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=0fc6d1b17b750c4e29e5901ec8ce768dd9c33e6b;p=hippotat.git Config inspection: make InspectableConfig impl dyn despatch Signed-off-by: Ian Jackson --- diff --git a/src/config.rs b/src/config.rs index 13605d5..1ecc479 100644 --- a/src/config.rs +++ b/src/config.rs @@ -95,12 +95,16 @@ pub trait InspectableConfig { -> Option<&dyn InspectableConfigValue>; #[throws(AE)] - fn implement_print_config(&self, key: &str) { - if let Some(inspectable) = self.inspect_key(key) { - println!("{}", DisplayInspectable(inspectable)); - } else { - throw!(anyhow!("unknown config key {:?}", key)); + fn implement_print_config(&self, key: &str) where Self: Sized { + #[throws(AE)] + fn inner(self_: &dyn InspectableConfig, key: &str) { + if let Some(inspectable) = self_.inspect_key(key) { + println!("{}", DisplayInspectable(inspectable)); + } else { + throw!(anyhow!("unknown config key {:?}", key)); + } } + inner(self, key)?; } }