Alloc a set-algebra result; frozen picks frozenset (left-operand type rule). */
(&mut self, items: Vec<Val>, frozen: bool)
| 151 | |
| 152 | /* Alloc a set-algebra result; frozen picks frozenset (left-operand type rule). */ |
| 153 | pub(crate) fn alloc_set_result(&mut self, items: Vec<Val>, frozen: bool) -> Result<Val, VmErr> { |
| 154 | let mut s = ValSet::with_capacity(items.len()); |
| 155 | for v in items { s.insert(v, &self.heap); } |
| 156 | if frozen { self.heap.alloc(HeapObj::FrozenSet(Rc::new(s))) } |
| 157 | else { self.heap.alloc(HeapObj::Set(Rc::new(RefCell::new(s)))) } |
| 158 | } |
| 159 | |
| 160 | /* Set bitwise ops (|, &, ^) over set/frozenset; result frozen iff `a` is frozen. */ |
| 161 | // Union/intersection/symmetric-diff items; content membership lets alloc dedup distinct-handle equals. |
no test coverage detected