1use crate::{
2 common::bit_subset64::BitSubset64,
3 mem::{
4 block::Block,
5 flexible_array::FlexibleArray,
6 manager::{Dealloc, Manager},
7 mut_ref::MutRef,
8 ref_::Ref,
9 },
10};
11
12use super::{any::Any, bitset::ARRAY, ref_cast::RefCast};
13
14pub type JsArray<D> = FlexibleArray<Any<D>>;
15
16pub type JsArrayRef<D> = Ref<JsArray<D>, D>;
17
18pub type JsArrayMutRef<D> = MutRef<JsArray<D>, D>;
19
20impl<D: Dealloc> RefCast<D> for JsArray<D> {
21 const REF_SUBSET: BitSubset64<*const Block<Self, D>> = ARRAY.cast();
22}
23
24pub fn new_array<M: Manager, I: ExactSizeIterator<Item = Any<M::Dealloc>>>(
25 m: M,
26 i: impl IntoIterator<IntoIter = I>,
27) -> JsArrayMutRef<M::Dealloc> {
28 m.flexible_array_new(i)
29}