simbld_http/traits/
get_description_trait.rs

1use crate::responses::ResponsesTypes;
2use crate::{
3    ResponsesClientCodes, ResponsesCrawlerCodes, ResponsesInformationalCodes,
4    ResponsesLocalApiCodes, ResponsesRedirectionCodes, ResponsesServerCodes, ResponsesServiceCodes,
5    ResponsesSuccessCodes,
6};
7
8pub trait GetDescription {
9    fn get_description_field(&self, field: &str) -> Option<&'static str>;
10}
11
12/// This macro implements the `GetDescription` trait for a given type.
13macro_rules! impl_get_description {
14    ($type_name:ty) => {
15        impl GetDescription for $type_name {
16            fn get_description_field(&self, field: &str) -> Option<&'static str> {
17                match field {
18                    "Description" => Some(self.get_description()),
19                    _ => None,
20                }
21            }
22        }
23    };
24}
25
26impl_get_description!(ResponsesTypes);
27impl_get_description!(ResponsesInformationalCodes);
28impl_get_description!(ResponsesSuccessCodes);
29impl_get_description!(ResponsesRedirectionCodes);
30impl_get_description!(ResponsesClientCodes);
31impl_get_description!(ResponsesServerCodes);
32impl_get_description!(ResponsesServiceCodes);
33impl_get_description!(ResponsesCrawlerCodes);
34impl_get_description!(ResponsesLocalApiCodes);