reifydb_core/value/column/data/
take.rs

1// Copyright (c) reifydb.com 2025
2// This file is licensed under the AGPL-3.0-or-later, see license.md file
3
4use crate::value::column::ColumnData;
5
6impl ColumnData {
7	pub fn take(&self, num: usize) -> ColumnData {
8		match self {
9			ColumnData::Bool(container) => ColumnData::Bool(container.take(num)),
10			ColumnData::Float4(container) => ColumnData::Float4(container.take(num)),
11			ColumnData::Float8(container) => ColumnData::Float8(container.take(num)),
12			ColumnData::Int1(container) => ColumnData::Int1(container.take(num)),
13			ColumnData::Int2(container) => ColumnData::Int2(container.take(num)),
14			ColumnData::Int4(container) => ColumnData::Int4(container.take(num)),
15			ColumnData::Int8(container) => ColumnData::Int8(container.take(num)),
16			ColumnData::Int16(container) => ColumnData::Int16(container.take(num)),
17			ColumnData::Utf8 {
18				container,
19				max_bytes,
20			} => ColumnData::Utf8 {
21				container: container.take(num),
22				max_bytes: *max_bytes,
23			},
24			ColumnData::Uint1(container) => ColumnData::Uint1(container.take(num)),
25			ColumnData::Uint2(container) => ColumnData::Uint2(container.take(num)),
26			ColumnData::Uint4(container) => ColumnData::Uint4(container.take(num)),
27			ColumnData::Uint8(container) => ColumnData::Uint8(container.take(num)),
28			ColumnData::Uint16(container) => ColumnData::Uint16(container.take(num)),
29			ColumnData::Date(container) => ColumnData::Date(container.take(num)),
30			ColumnData::DateTime(container) => ColumnData::DateTime(container.take(num)),
31			ColumnData::Time(container) => ColumnData::Time(container.take(num)),
32			ColumnData::Duration(container) => ColumnData::Duration(container.take(num)),
33			ColumnData::Undefined(container) => ColumnData::Undefined(container.take(num)),
34			ColumnData::IdentityId(container) => ColumnData::IdentityId(container.take(num)),
35			ColumnData::Uuid4(container) => ColumnData::Uuid4(container.take(num)),
36			ColumnData::Uuid7(container) => ColumnData::Uuid7(container.take(num)),
37			ColumnData::Blob {
38				container,
39				max_bytes,
40			} => ColumnData::Blob {
41				container: container.take(num),
42				max_bytes: *max_bytes,
43			},
44			ColumnData::Int {
45				container,
46				max_bytes,
47			} => ColumnData::Int {
48				container: container.take(num),
49				max_bytes: *max_bytes,
50			},
51			ColumnData::Uint {
52				container,
53				max_bytes,
54			} => ColumnData::Uint {
55				container: container.take(num),
56				max_bytes: *max_bytes,
57			},
58			ColumnData::Decimal {
59				container,
60				precision,
61				scale,
62			} => ColumnData::Decimal {
63				container: container.take(num),
64				precision: *precision,
65				scale: *scale,
66			},
67			ColumnData::Any(container) => ColumnData::Any(container.take(num)),
68		}
69	}
70}