use libhaystack::val::{Value, kind::HaystackKind};
use uuid::Uuid;
use crate::base::link::Link;
#[derive(Debug, Default, Clone)]
pub struct OutDesc {
pub name: String,
pub kind: HaystackKind,
}
pub trait OutputProps {
fn desc(&self) -> &OutDesc;
fn name(&self) -> &str {
&self.desc().name
}
fn block_id(&self) -> &Uuid;
fn is_connected(&self) -> bool;
fn links(&self) -> Vec<&(dyn Link + Send)>;
fn remove_link(&mut self, link: &dyn Link) {
self.remove_link_by_id(link.id())
}
fn remove_link_by_id(&mut self, link_id: &Uuid);
fn remove_target_block_links(&mut self, block_id: &Uuid);
fn remove_all_links(&mut self);
fn value(&self) -> &Value;
}