1#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
3pub enum RowIndex<'i> {
4 Position(usize),
6 Name(&'i str),
8}
9
10impl RowIndex<'_> {
11 pub fn into_owned(self) -> OwnedRowIndex {
13 match self {
14 RowIndex::Position(index) => index.into(),
15 RowIndex::Name(index) => index.into(),
16 }
17 }
18}
19
20#[derive(Clone, Debug, Eq, PartialEq, Hash)]
22pub enum OwnedRowIndex {
23 Position(usize),
25 Name(Box<str>),
27}
28
29impl OwnedRowIndex {
30 pub fn as_borrowed(&self) -> RowIndex<'_> {
32 match self {
33 OwnedRowIndex::Position(index) => (*index).into(),
34 OwnedRowIndex::Name(index) => index.as_ref().into(),
35 }
36 }
37}
38
39impl From<usize> for RowIndex<'_> {
40 fn from(value: usize) -> Self {
41 Self::Position(value)
42 }
43}
44
45impl<'i> From<&'i str> for RowIndex<'i> {
46 fn from(value: &'i str) -> Self {
47 Self::Name(value)
48 }
49}
50
51impl From<usize> for OwnedRowIndex {
52 fn from(value: usize) -> Self {
53 Self::Position(value)
54 }
55}
56
57impl From<&str> for OwnedRowIndex {
58 fn from(value: &str) -> Self {
59 value.to_string().into()
60 }
61}
62
63impl From<String> for OwnedRowIndex {
64 fn from(value: String) -> Self {
65 Self::Name(value.into_boxed_str())
66 }
67}