wip: borrow checker battles

This commit is contained in:
🪞👃🪞 2024-09-04 16:57:48 +03:00
parent 1d4db3c629
commit 7fbb40fad6
38 changed files with 778 additions and 708 deletions

View file

@ -1,13 +1,12 @@
use crate::*;
pub struct Mixer {
pub struct Mixer<T, U> {
pub name: String,
pub tracks: Vec<Track>,
pub tracks: Vec<Track<T, U>>,
pub selected_track: usize,
pub selected_column: usize,
}
impl Mixer {
impl<T, U> Mixer<T, U> {
pub fn new (name: &str) -> Usually<Self> {
let (client, _status) = Client::new(name, ClientOptions::NO_START_SERVER)?;
Ok(Self {
@ -22,17 +21,21 @@ impl Mixer {
self.tracks.push(track);
Ok(self)
}
pub fn track (&self) -> Option<&Track> {
pub fn track (&self) -> Option<&Track<T, U>> {
self.tracks.get(self.selected_track)
}
}
process!(Mixer = process);
fn process (
_: &mut Mixer,
_: &Client,
_: &ProcessScope
) -> Control {
Control::Continue
impl<'a> Render<TuiOutput<'a>, Rect> for Mixer<TuiOutput<'a>, Rect> {
fn render (&self, to: &mut TuiOutput<'a>) -> Perhaps<Rect> {
let mut tracks = Split::right();
for channel in self.tracks.iter() {
tracks = tracks.add_ref(channel)
}
tracks.render(to)
}
}
impl<T, U> Process for Mixer<T, U> {
fn process (&mut self, _: &Client, _: &ProcessScope) -> Control {
Control::Continue
}
}