| 48 | |
| 49 | impl<'a> Context<'a> { |
| 50 | pub fn add_variable<S, V>( |
| 51 | &mut self, |
| 52 | name: S, |
| 53 | value: V, |
| 54 | ) -> Result<(), <V as TryIntoValue>::Error> |
| 55 | where |
| 56 | S: Into<String>, |
| 57 | V: TryIntoValue, |
| 58 | { |
| 59 | match self { |
| 60 | Context::Root { variables, .. } => { |
| 61 | let value = value.try_into_value()?; |
| 62 | let value: Box<dyn Val> = value.try_into().unwrap(); |
| 63 | variables.insert(name.into(), value); |
| 64 | } |
| 65 | Context::Child { variables, .. } => { |
| 66 | let value = value.try_into_value()?; |
| 67 | let value: Box<dyn Val> = value.try_into().unwrap(); |
| 68 | variables.insert(name.into(), value); |
| 69 | } |
| 70 | } |
| 71 | Ok(()) |
| 72 | } |
| 73 | |
| 74 | pub fn add_variable_from_value<S, V>(&mut self, name: S, value: V) |
| 75 | where |