From 2ff88371723e26fe0089c3498c46fa2cf83f2bf4 Mon Sep 17 00:00:00 2001 From: Artem Goncharov Date: Tue, 11 Nov 2025 13:09:40 +0100 Subject: [PATCH] Make rust-sdk findable trait using Result In order to stop using `unwrap` and `expect` we need to change `Findable` trait and make `get_ep` and `list_ep` return Result instead. This change is expected to fail initially, but the content would be taken directly to the `openstack_sdk` where it will be applied together with the corresponding interface change. Change-Id: Idc2452d0b481f0fd55f9573bcc8b50102c278c99 Signed-off-by: Artem Goncharov --- codegenerator/templates/rust_sdk/find.rs.j2 | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/codegenerator/templates/rust_sdk/find.rs.j2 b/codegenerator/templates/rust_sdk/find.rs.j2 index 3a62c0d..73cf13a 100644 --- a/codegenerator/templates/rust_sdk/find.rs.j2 +++ b/codegenerator/templates/rust_sdk/find.rs.j2 @@ -20,8 +20,8 @@ use http::{HeaderMap, HeaderName, HeaderValue}; use crate::api::find::Findable; use crate::api::rest_endpoint_prelude::*; -{%- if not name_filter_supported %} use crate::api::{ApiError, RestClient}; +{%- if not name_filter_supported %} use tracing::trace; {%- endif %} @@ -84,7 +84,7 @@ where impl<'a> Findable for Request<'a> { type G = Get::Request<'a>; type L = List::Request{{ list_lifetime }}; - fn get_ep(&self) -> Get::Request<'a> { + fn get_ep(&self) -> Result, ApiError> { let mut ep = Get::Request::builder(); ep.id(self.id.clone()); {%- for k, param in type_manager.parameters.items() %} @@ -93,11 +93,11 @@ impl<'a> Findable for Request<'a> { if let Some(headers) = &self._headers { ep.headers(headers.iter().map(|(k, v)| (Some(k.clone()), v.clone()))); } - ep.build().unwrap() + ep.build().map_err(|err| ApiError::endpoint_builder(err)) } - {%- if name_filter_supported %} - fn list_ep(&self) -> List::Request{{ list_lifetime }} { + {% if name_filter_supported -%} + fn list_ep(&self) -> Result> { let mut ep = List::Request::builder(); {%- for k, param in type_manager.parameters.items() %} ep.{{ param.remote_name }}(self.{{ param.local_name}}.clone()); @@ -106,10 +106,10 @@ impl<'a> Findable for Request<'a> { ep.headers(headers.iter().map(|(k, v)| (Some(k.clone()), v.clone()))); } ep.{{ name_field }}(self.id.clone()); - ep.build().unwrap() + ep.build().map_err(|err| ApiError::endpoint_builder(err)) } - {%- else %} - fn list_ep(&self) -> List::Request{{ list_lifetime }} { + {% else %} + fn list_ep(&self) -> Result> { let mut ep = List::Request::builder(); {%- for k, param in type_manager.parameters.items() %} ep.{{ param.remote_name }}(self.{{ param.local_name}}.clone()); @@ -117,7 +117,7 @@ impl<'a> Findable for Request<'a> { if let Some(headers) = &self._headers { ep.headers(headers.iter().map(|(k, v)| (Some(k.clone()), v.clone()))); } - ep.build().unwrap() + ep.build().map_err(|err| ApiError::endpoint_builder(err)) } {%- endif %} {%- if not name_filter_supported %}