cog_task/action/core/
horizontal.rs

1use crate::action::core::stack::{Direction, Stack};
2use crate::action::{Action, StatefulAction};
3use crate::comm::QWriter;
4use crate::resource::{IoManager, ResourceManager};
5use crate::server::{AsyncSignal, Config, SyncSignal};
6use eyre::{eyre, Result};
7use serde::{Deserialize, Serialize};
8
9#[derive(Debug, Deserialize, Serialize)]
10pub struct Horizontal(Vec<Box<dyn Action>>, #[serde(default)] Vec<f32>);
11
12impl Action for Horizontal {
13    fn init(self) -> Result<Box<dyn Action>>
14    where
15        Self: 'static + Sized,
16    {
17        Stack::new(self.0, Direction::Horizontal, self.1).init()
18    }
19
20    fn stateful(
21        &self,
22        _io: &IoManager,
23        _res: &ResourceManager,
24        _config: &Config,
25        _sync_writer: &QWriter<SyncSignal>,
26        _async_writer: &QWriter<AsyncSignal>,
27    ) -> Result<Box<dyn StatefulAction>> {
28        Err(eyre!("Vertical can not be stateful."))
29    }
30}