Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //use ndarray::array;
- fn main() {
- let arr: [[i8; 2]; 2] = [[1, 2], [6, 7]];
- //let arr = vec![vec![1i8, 2, 3], vec![6, 7]];
- //let arr = array![[1i8, 2], [6, 7]];
- //let arr = array![[1i8, 2], [6, 7]].t();
- let base = &arr[0][0] as *const _ as usize;
- let mut can_be_row_major = true;
- let mut can_be_noncontig_row_major = true;
- for (i, s) in arr.iter().enumerate() {
- let row_base = &s[0] as *const _ as usize;
- for (j, _) in s.iter().enumerate() {
- let offset = &arr[i][j] as *const _ as usize - base;
- let row_offset = &arr[i][j] as *const _ as usize - row_base;
- println!(
- "arr[{}][{}]: offset {} (in-row offset {})",
- i, j, offset, row_offset
- );
- if row_offset != j {
- can_be_noncontig_row_major = false;
- }
- if offset != j + i * s.len() {
- can_be_row_major = false;
- }
- }
- }
- println!("Can be row-major: {}", can_be_row_major);
- println!("Can be non-contiguous row-major: {}", can_be_noncontig_row_major);
- }
Add Comment
Please, Sign In to add comment