MCPcopy Create free account
hub / github.com/apache/arrow-rs / into_vec

Function into_vec

arrow-buffer/src/buffer/scalar.rs:363–401  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

361
362 #[test]
363 fn into_vec() {
364 let input = vec![1u8, 2, 3, 4];
365
366 // No copy
367 let input_buffer = Buffer::from_vec(input.clone());
368 let input_ptr = input_buffer.as_ptr();
369 let input_len = input_buffer.len();
370 let scalar_buffer = ScalarBuffer::<u8>::new(input_buffer, 0, input_len);
371 let vec = Vec::from(scalar_buffer);
372 assert_eq!(vec.as_slice(), input.as_slice());
373 assert_eq!(vec.as_ptr(), input_ptr);
374
375 // Custom allocation - makes a copy
376 let mut input_clone = input.clone();
377 let input_ptr = NonNull::new(input_clone.as_mut_ptr()).unwrap();
378 let dealloc = Arc::new(());
379 let buffer =
380 unsafe { Buffer::from_custom_allocation(input_ptr, input_clone.len(), dealloc as _) };
381 let scalar_buffer = ScalarBuffer::<u8>::new(buffer, 0, input.len());
382 let vec = Vec::from(scalar_buffer);
383 assert_eq!(vec, input.as_slice());
384 assert_ne!(vec.as_ptr(), input_ptr.as_ptr());
385
386 // Offset - makes a copy
387 let input_buffer = Buffer::from_vec(input.clone());
388 let input_ptr = input_buffer.as_ptr();
389 let input_len = input_buffer.len();
390 let scalar_buffer = ScalarBuffer::<u8>::new(input_buffer, 1, input_len - 1);
391 let vec = Vec::from(scalar_buffer);
392 assert_eq!(vec.as_slice(), &input[1..]);
393 assert_ne!(vec.as_ptr(), input_ptr);
394
395 // Inner buffer Arc ref count != 0 - makes a copy
396 let buffer = Buffer::from_slice_ref(input.as_slice());
397 let scalar_buffer = ScalarBuffer::<u8>::new(buffer, 0, input.len());
398 let vec = Vec::from(scalar_buffer);
399 assert_eq!(vec, input.as_slice());
400 assert_ne!(vec.as_ptr(), input.as_ptr());
401 }
402
403 #[test]
404 fn scalar_buffer_impl_eq() {

Callers

nothing calls this directly

Calls 5

as_mut_ptrMethod · 0.80
cloneMethod · 0.45
as_ptrMethod · 0.45
lenMethod · 0.45
as_sliceMethod · 0.45

Tested by

no test coverage detected