Guest User

Untitled

a guest
Jan 18th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. //use ndarray::array;
  2.  
  3. fn main() {
  4. let arr: [[i8; 2]; 2] = [[1, 2], [6, 7]];
  5. //let arr = vec![vec![1i8, 2, 3], vec![6, 7]];
  6. //let arr = array![[1i8, 2], [6, 7]];
  7. //let arr = array![[1i8, 2], [6, 7]].t();
  8.  
  9. let base = &arr[0][0] as *const _ as usize;
  10. let mut can_be_row_major = true;
  11. let mut can_be_noncontig_row_major = true;
  12. for (i, s) in arr.iter().enumerate() {
  13. let row_base = &s[0] as *const _ as usize;
  14. for (j, _) in s.iter().enumerate() {
  15. let offset = &arr[i][j] as *const _ as usize - base;
  16. let row_offset = &arr[i][j] as *const _ as usize - row_base;
  17. println!(
  18. "arr[{}][{}]: offset {} (in-row offset {})",
  19. i, j, offset, row_offset
  20. );
  21. if row_offset != j {
  22. can_be_noncontig_row_major = false;
  23. }
  24. if offset != j + i * s.len() {
  25. can_be_row_major = false;
  26. }
  27. }
  28. }
  29. println!("Can be row-major: {}", can_be_row_major);
  30. println!("Can be non-contiguous row-major: {}", can_be_noncontig_row_major);
  31. }
Add Comment
Please, Sign In to add comment