Vector type hell
This commit is contained in:
@@ -1,19 +1,50 @@
|
||||
use avr_device::atmega2560::TC0;
|
||||
use ufmt::{Formatter, uDisplay, uWrite};
|
||||
|
||||
pub struct Vector<'a, T> {
|
||||
size: u16,
|
||||
array: &'a [T]
|
||||
size: usize,
|
||||
array: &'a mut [T]
|
||||
}
|
||||
|
||||
impl<'a, T> Vector<'a, T> {
|
||||
pub fn new(size: u16, array: &[T]) -> Self {
|
||||
pub fn new(size: usize, array: &'a mut [T]) -> Self {
|
||||
Self {
|
||||
size, array
|
||||
}
|
||||
}
|
||||
|
||||
pub fn push(&mut self, byte: T) {
|
||||
let array : &[T];
|
||||
|
||||
if self.size > 0 {
|
||||
array = &mut self.array[0..self.size];
|
||||
array[self.size] = byte;
|
||||
} else {
|
||||
array = &mut [byte];
|
||||
}
|
||||
|
||||
self.array = array;
|
||||
self.size = self.size + 1;
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, T> Iterator for Vector<'a, T> {
|
||||
type Item = T;
|
||||
|
||||
fn next(&mut self) -> Option<Self::Item> {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, T> uDisplay for Vector<'a, T> {
|
||||
fn fmt<W>(&self, _: &mut Formatter<'_, W>) -> Result<(), W::Error> where W: uWrite + ?Sized {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! vector {
|
||||
($array:expr) => {
|
||||
Vector::new($array.len(), $array);
|
||||
Vector::new(&mut $array.len(), $array)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user