standard_error/extras/
interpolate.rs

1use std::collections::HashMap;
2
3use crate::StandardError;
4
5pub trait Interpolate {
6    fn interpolate_values(&mut self, values: HashMap<String, String>) -> Self;
7    fn interpolate_err(&mut self, e: String) -> Self;
8}
9
10impl Interpolate for StandardError {
11    fn interpolate_values(&mut self, values: HashMap<String, String>) -> Self {
12        let mut new_message = self.message.clone(); // Clone the message to avoid mutating it directly
13        for (k, v) in values.into_iter() {
14            new_message = new_message.replace(&format!("[{}]", &k), &v); // Use new_message to accumulate changes
15        }
16        self.message = new_message;
17        self.clone()
18    }
19
20    fn interpolate_err(&mut self, e: String) -> Self {
21        let mut values: HashMap<String, String> = HashMap::new();
22        values.insert("err".to_string(), e);
23        self.interpolate_values(values)
24    }
25}