Skip to main content

GridPointIndex

Trait GridPointIndex 

Source
pub trait GridPointIndex {
    // Required methods
    fn grid_shape(&self) -> (usize, usize);
    fn scanning_mode(&self) -> &ScanningMode;

    // Provided method
    fn ij(&self) -> Result<GridPointIndexIterator, GribError> { ... }
}
Expand description

A functionality to generate an iterator over 2D index (i, j) of grid points.

§Examples

use grib::{GridPointIndex, def::grib2::template::param_set::ScanningMode};

struct Grid {
    ni: u32,
    nj: u32,
    scanning_mode: ScanningMode,
}

impl GridPointIndex for Grid {
    fn grid_shape(&self) -> (usize, usize) {
        (self.ni as usize, self.nj as usize)
    }

    fn scanning_mode(&self) -> &ScanningMode {
        &self.scanning_mode
    }
}

let grid_2x3 = Grid {
    ni: 2,
    nj: 3,
    scanning_mode: ScanningMode(0b01000000),
};
assert_eq!(grid_2x3.grid_shape(), (2, 3));

let mut iter = grid_2x3.ij().unwrap();
assert_eq!(iter.next(), Some((0, 0)));
assert_eq!(iter.next(), Some((1, 0)));
assert_eq!(iter.next(), Some((0, 1)));
assert_eq!(iter.next(), Some((1, 1)));
assert_eq!(iter.next(), Some((0, 2)));
assert_eq!(iter.next(), Some((1, 2)));
assert_eq!(iter.next(), None);

Required Methods§

Source

fn grid_shape(&self) -> (usize, usize)

Returns the shape of the grid, i.e. a tuple of the number of grids in the i and j directions.

Source

fn scanning_mode(&self) -> &ScanningMode

Returns ScanningMode used for the iteration.

Provided Methods§

Source

fn ij(&self) -> Result<GridPointIndexIterator, GribError>

Returns an iterator over 2D index (i, j) of grid points.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<T: GridPointIndex + ?Sized> GridPointIndex for &T

Implementors§