reifydb_core/value/frame/
frame.rs1use std::ops::{Deref, Index};
5
6use reifydb_type::RowNumber;
7use serde::{Deserialize, Serialize};
8
9use crate::FrameColumn;
10
11#[derive(Debug, Clone, Serialize, Deserialize)]
12pub struct Frame {
13 pub row_numbers: Vec<RowNumber>,
14 pub columns: Vec<FrameColumn>,
15}
16
17impl Deref for Frame {
18 type Target = [FrameColumn];
19
20 fn deref(&self) -> &Self::Target {
21 &self.columns
22 }
23}
24
25impl Index<usize> for Frame {
26 type Output = FrameColumn;
27
28 fn index(&self, index: usize) -> &Self::Output {
29 self.columns.index(index)
30 }
31}
32
33impl Frame {
34 pub fn new(columns: Vec<FrameColumn>) -> Self {
35 Self {
36 row_numbers: Vec::new(),
37 columns,
38 }
39 }
40
41 pub fn with_row_numbers(columns: Vec<FrameColumn>, row_numbers: Vec<RowNumber>) -> Self {
42 Self {
43 row_numbers,
44 columns,
45 }
46 }
47}