use crate::{NodeIndex, NodePath, SurfaceIndex};
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Ord, PartialOrd)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub struct TabIndex(pub usize);
impl From<usize> for TabIndex {
#[inline]
fn from(index: usize) -> Self {
TabIndex(index)
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub struct TabPath {
pub surface: SurfaceIndex,
pub node: NodeIndex,
pub tab: TabIndex,
}
impl TabPath {
pub const fn new(surface: SurfaceIndex, node: NodeIndex, tab: TabIndex) -> Self {
Self { surface, node, tab }
}
pub fn node_path(self) -> NodePath {
NodePath {
surface: self.surface,
node: self.node,
}
}
}
impl From<(NodePath, TabIndex)> for TabPath {
fn from((NodePath { surface, node }, tab): (NodePath, TabIndex)) -> Self {
TabPath { surface, node, tab }
}
}