nfm-controller/src/utils/report.rs (25 lines of code) (raw):

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 use serde::Serialize; use crate::reports::report::ReportValue; pub fn to_value_pairs<T: Serialize>(item: &T) -> Vec<(String, ReportValue)> { let item_serialized = serde_json::to_value(item).unwrap(); let key_value_map = item_serialized.as_object().unwrap(); key_value_map .iter() .filter_map(|(k, v)| { // Serialize only primitive types into the report. if !v.is_object() && !v.is_array() { Some((k.clone(), v.into())) } else { None } }) .collect() } #[macro_export] macro_rules! add_histogram_to_report { ($self:ident, $field:ident, $vec:expr) => { $vec.push(( stringify!($field).to_string(), ReportValue::Histogram($self.$field), )); }; }