From fe99fddc2963943a41a0492012969d924c9f9fc4 Mon Sep 17 00:00:00 2001 From: JOLIMAITRE Matthieu Date: Wed, 1 Jun 2022 04:00:06 +0300 Subject: [PATCH] changed Object API --- src/prelude.rs | 8 ++++---- src/value.rs | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/prelude.rs b/src/prelude.rs index 5387ce4..433e268 100644 --- a/src/prelude.rs +++ b/src/prelude.rs @@ -128,12 +128,12 @@ fn obj(_: Vec) -> Value { Value::Object(HashMap::new()) } -fn set(mut args: Vec) -> Value { +fn set(args: Vec) -> Value { + let mut object = args.get(0).unwrap().as_object().unwrap().clone(); let name = args.get(1).unwrap().as_string().unwrap().to_string(); let value = args.get(2).unwrap().clone(); - let object = args.get_mut(0).unwrap().as_object_mut().unwrap(); - object.insert(name, value.clone()); - value + object.insert(name, value); + object.into() } fn get(args: Vec) -> Value { diff --git a/src/value.rs b/src/value.rs index 73b79e7..fdfe9a4 100644 --- a/src/value.rs +++ b/src/value.rs @@ -139,6 +139,12 @@ impl From<&str> for Value { } } +impl From> for Value { + fn from(value: HashMap) -> Self { + Self::Object(value) + } +} + impl From> for Value where T: Into,