onion_vm/types/lambda/
mod.rs

1use rustc_hash::FxHashMap;
2
3use crate::types::{
4    object::{OnionObject, OnionStaticObject},
5    pair::OnionPair,
6    tuple::OnionTuple,
7};
8
9pub mod context;
10pub mod definition;
11pub mod launcher;
12pub(crate) mod native;
13pub mod runnable;
14pub mod vm_instructions;
15pub mod parameter;
16
17pub fn build_dict_from_hashmap(
18    hashmap: &FxHashMap<String, OnionStaticObject>,
19) -> OnionStaticObject {
20    let mut pairs = vec![];
21    for (key, value) in hashmap {
22        pairs.push(OnionPair::new_static(
23            &OnionObject::String(key.clone().into()).stabilize(),
24            &value,
25        ));
26    }
27    OnionTuple::new_static_no_ref(&pairs)
28}
29
30pub fn build_dict_from_hashmap_weak(hashmap: &FxHashMap<String, OnionObject>) -> OnionStaticObject {
31    let mut pairs = vec![];
32    for (key, value) in hashmap {
33        pairs.push(
34            OnionObject::Pair(
35                OnionPair::new(OnionObject::String(key.clone().into()), value.clone()).into(),
36            )
37            .consume_and_stabilize(),
38        );
39    }
40    OnionTuple::new_static_no_ref(&pairs)
41}