[][src]Trait toodee::TranslateOps

pub trait TranslateOps<T>: TooDeeOpsMut<T> {
    fn translate_with_wrap(&mut self, mid: Coordinate) { ... }
fn flip_rows(&mut self) { ... }
fn flip_cols(&mut self) { ... } }

Provides implementations for translate (also known as scroll) operations, and other internal data movement operations such as flipping.

Provided methods

fn translate_with_wrap(&mut self, mid: Coordinate)

Translate (or scroll) the entire area. The mid coordinate will be moved to (0, 0), and all other elements will be moved in the same fashion. All the original data is preserved by wrapping at the array edges.

If you don't want the wrapped data, simply overwrite it after translation.

Examples

use toodee::{TooDee,TooDeeOps,TranslateOps};
let v = vec![42u32; 15];
let mut toodee : TooDee<u32> = TooDee::from_vec(5, 3, v);
toodee[1][1] = 1;
// move (1, 1) to (0, 0)
toodee.translate_with_wrap((1, 1));
assert_eq!(toodee[0][0], 1);
assert_eq!(toodee[1][1], 42);
use toodee::{TooDee,TooDeeOps,TranslateOps};
let v = vec![42u32; 15];
let mut toodee : TooDee<u32> = TooDee::from_vec(5, 3, v);
// set (4, 2) to 1
toodee[(4, 2)] = 1;
// move (4, 2) to (0, 0)
toodee.translate_with_wrap((4, 2));
assert_eq!(toodee[0][0], 1);
assert_eq!(toodee[2][4], 42);

fn flip_rows(&mut self)

Flips (or mirrors) the rows.

Examples

use toodee::{TooDee,TooDeeOps,TranslateOps};
let v = vec![42u32; 15];
let mut toodee : TooDee<u32> = TooDee::from_vec(5, 3, v);
toodee[0][1] = 1;
toodee.flip_rows();
assert_eq!(toodee[2][1], 1);

fn flip_cols(&mut self)

Flips (or mirrors) the columns.

use toodee::{TooDee,TooDeeOps,TranslateOps};
let v = vec![42u32; 15];
let mut toodee : TooDee<u32> = TooDee::from_vec(5, 3, v);
toodee[1][1] = 1;
toodee.flip_cols();
assert_eq!(toodee[1][3], 1);
Loading content...

Implementors

impl<T> TranslateOps<T> for TooDee<T>[src]

impl<T, '_> TranslateOps<T> for TooDeeViewMut<'_, T>[src]

Loading content...