From 33f465bd40e45f6634d0ba805d99fa012bbf4433 Mon Sep 17 00:00:00 2001 From: Tait Hoyem Date: Sun, 25 Sep 2022 21:33:50 -0600 Subject: [PATCH] Generic function for all enum variants of args --- src/requests.rs | 60 +++++++++++++++++-------------------------------- 1 file changed, 20 insertions(+), 40 deletions(-) diff --git a/src/requests.rs b/src/requests.rs index 1f650ff..d7b7ad7 100644 --- a/src/requests.rs +++ b/src/requests.rs @@ -122,49 +122,29 @@ pub enum Args { /// See `lunanode sshkey help` SshKey(SshKeySubArgs), } + +/// Specifies an internal function which can only be called on LunaNodeRequests whoes response type implements Debug. This could be set in the structure itself, and probably should be. +fn print_req(req: &T) -> Result<(), LNError> +where + ::Response: std::fmt::Debug +{ + let ans = req.make_request()?; + println!("{:#?}", ans); + Ok(()) +} impl Args { pub fn make_request(&self) -> Result<(), LNError> { match self { - Self::SshKey(SshKeySubArgs::List(ssk_list)) => { - let list = ssk_list.make_request()?; - println!("{:#?}", list); - }, - Self::Record(RecordSubArgs::List(rec_list)) => { - let list = rec_list.make_request()?; - println!("{:#?}", list); - }, - Self::Network(NetworkSubArgs::List(net_list)) => { - let list = net_list.make_request()?; - println!("{:#?}", list); - }, - Self::Floating(FloatingSubArgs::List(ip_list)) => { - let list = ip_list.make_request()?; - println!("{:#?}", list); - }, - Self::Vm(VmSubArgs::List(vm_list)) => { - let list = vm_list.make_request()?; - println!("{:#?}", list); - }, - Self::Volume(VolumeSubArgs::List(vol_list)) => { - let list = vol_list.make_request()?; - println!("{:#?}", list); - }, - Self::Image(ImageSubArgs::List(image_list)) => { - let list = image_list.make_request()?; - println!("{:#?}", list); - }, - Self::Billing(BillingSubArgs::Credit(billing_credit)) => { - let credit =billing_credit.make_request()?; - println!("{:#?}", credit); - }, - Self::Zone(ZoneSubArgs::List(zone_list)) => { - let list = zone_list.make_request()?; - println!("{:#?}", list); - }, - Self::Dyn(DynSubArgs::List(dyn_list)) => { - let list = dyn_list.make_request()?; - println!("{:#?}", list); - }, + Self::SshKey(SshKeySubArgs::List(ssk_list)) => print_req(ssk_list)?, + Self::Record(RecordSubArgs::List(rec_list)) => print_req(rec_list)?, + Self::Network(NetworkSubArgs::List(net_list)) => print_req(net_list)?, + Self::Floating(FloatingSubArgs::List(ip_list)) => print_req(ip_list)?, + Self::Vm(VmSubArgs::List(vm_list)) => print_req(vm_list)?, + Self::Volume(VolumeSubArgs::List(vol_list)) => print_req(vol_list)?, + Self::Image(ImageSubArgs::List(image_list)) => print_req(image_list)?, + Self::Billing(BillingSubArgs::Credit(billing_credit)) => print_req(billing_credit)?, + Self::Zone(ZoneSubArgs::List(zone_list)) => print_req(zone_list)?, + Self::Dyn(DynSubArgs::List(dyn_list)) => print_req(dyn_list)?, } Ok(()) }