From 0fc6d1b17b750c4e29e5901ec8ce768dd9c33e6b Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 10 Jan 2023 00:01:00 +0000 Subject: [PATCH] Config inspection: make InspectableConfig impl dyn despatch Signed-off-by: Ian Jackson --- src/config.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) 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)?; } } -- 2.30.2