pub trait Frame: Copy + Default {
type Mtx: Matrix;
const COLS: usize = <Self::Mtx>::MATRIX_COLS;
const ROWS: usize = <Self::Mtx>::MATRIX_ROWS;
// Required methods
fn row_plan(&self, row: usize) -> &RowPlan;
fn row_plan_mut(&mut self, row: usize) -> &mut RowPlan;
// Provided method
fn set<T>(&mut self, image: &T)
where T: Render + ?Sized { ... }
}
Expand description
A ‘Compiled’ representation of an image to be displayed.
Frame
s are populated from images implementing Render
, then passed on
to Display::set_frame()
.
§Implementing Frame
Implementations of Frame
do two things:
- specify the
Matrix
used to convert between image and matrix coordinates - act like an array of
RowPlan
s, one for each matrix row.
Note that implementations of Frame
must also implement Copy
and
Default
.
§Example implementation
#[derive(Copy, Clone)]
struct SimpleFrame (
[RowPlan; 3]
);
impl Default for SimpleFrame {
fn default() -> SimpleFrame {
SimpleFrame([RowPlan::default(); SimpleFrame::ROWS])
}
}
impl Frame for SimpleFrame {
type Mtx = SimpleMatrix;
fn row_plan(&self, row: usize) -> &RowPlan {
&self.0[row]
}
fn row_plan_mut(&mut self, row: usize) -> &mut RowPlan {
&mut self.0[row]
}
}
Provided Associated Constants§
Required Associated Types§
Required Methods§
Sourcefn row_plan(&self, row: usize) -> &RowPlan
fn row_plan(&self, row: usize) -> &RowPlan
Returns a reference to the RowPlan for a row of LEDs.
§Panics
Panics if row
is not in the range 0..ROWS
Sourcefn row_plan_mut(&mut self, row: usize) -> &mut RowPlan
fn row_plan_mut(&mut self, row: usize) -> &mut RowPlan
Returns a mutable reference to the RowPlan for a row of LEDs.
§Panics
Panics if row
is not in the range 0..ROWS
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.