| 194 | /// Each element's lean_dec on drop must work correctly. |
| 195 | #[unsafe(no_mangle)] |
| 196 | pub extern "C" fn rs_refcount_cache_dedup( |
| 197 | name: LeanIxName<LeanBorrowed<'_>>, |
| 198 | n: usize, |
| 199 | ) -> LeanArray<LeanOwned> { |
| 200 | let decoded = name.decode(); |
| 201 | let mut cache = LeanBuildCache::new(); |
| 202 | let arr = LeanArray::alloc(n); |
| 203 | for i in 0..n { |
| 204 | let lean_name = LeanIxName::build(&mut cache, &decoded); |
| 205 | arr.set(i, lean_name); |
| 206 | } |
| 207 | arr |
| 208 | } |
| 209 | |
| 210 | // ============================================================================= |
| 211 | // Persistent object handling |