If you are sure it's memory-safe ( I'm not 😅 ) - you can cast `openArray` to 
`UncheckedArray` that can be captured:
    
    
    # Same as above but want to accept variable length element array
    proc newOrder2*[T](elements: var openArray[T]) =
      let length = elements.len
      var elements = cast[ptr UncheckedArray[T]](elements)
      var index = createUncheckedArray[int](length)
      
      init_0_to_len index.withLength length
      
      (index.with_length length).sort do (a, b: int) -> int:
        elements[a].cmp elements[b]
      
      echo "newOrder: ", index.withLength length
      discard index
    
    
    Run

Reply via email to